WPF复选框IsChecked绑定,OnpropertyChanged不起作用

时间:2013-05-20 08:43:14

标签: wpf vb.net checkbox data-binding

我的视图中有checkbox,如果我对对象进行任何修改并触发propertyChanged事件,则对其的绑定工作正常。

另一方面,当我点击我的checkbox时,如果可以更改它所绑定的属性,我会执行一些逻辑。如果不是,我将其更改回False并触发propertyChanged事件。

我的观点是没有更新checbox的状态,但仍然会检查它。

对于任何旁路,这是一个已知的问题吗?

代码:

<ctrls:CheckBox 
   IsChecked="{Binding IsConverted, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>

当我更改值并引发属性更改事件时,将使用false值检索属性:

Private _isConverted As Boolean
Public Property IsConverted As Boolean
    Get
        Return _isConverted
    End Get
    Set(value As Boolean)
        _isConverted = value
    End Set
End Property

1 个答案:

答案 0 :(得分:-1)

Xaml的约束中,请确保Mode设置为TwoWay,以便更新在两个方向都有效。

<CheckBox IsChecked="{Binding Path=ViewModelIsChecked, Mode=TwoWay}"/>

此外,既然你发布了代码,你似乎“手动”做事,应该使用INotifyPropertyChanged接口来实现。你可以删除UpdateSourceTrigger并在ViewModel中实现INotifyPropertyChanged吗?

有一本很好的指南here

编辑: 因为海报不愿意或无法阅读和理解指南,所以这里有代码:

Public Property PhoneNumber() As String 
    Get 
        Return Me.phoneNumberValue
    End Get 

    Set(ByVal value As String)
        If Not (value = phoneNumberValue) Then 
            Me.phoneNumberValue = value
            NotifyPropertyChanged()          <===== THIS LINE IS DIFFERENT! YOU DON'T HAVE IT. YOU NEED IT.
        End If 
    End Set 
End Property