1

checkbox认为如果我对我的对象进行任何修改并触发propertyChanged事件,它的绑定工作正常。

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

我的观点没有更新复选框的这种状态,它仍然被选中。

这是任何旁路的已知问题吗?

代码:

<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
4

1 回答 1

-1

在您的 Binding in 中Xaml,确保将Mode其设置为,TwoWay以便更新双向工作。

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

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

这里有一个很好的指南。

编辑:并且由于海报不愿意或无法阅读和理解该指南,因此此处发布了代码:

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 
于 2013-05-20T08:55:45.057 回答