WPF两个绑定到单个属性的控件不相互更新

时间:2013-02-12 10:13:21

标签: wpf mvvm inotifypropertychanged

我正在使用MVVM设计模式开发WPF应用程序。

我有一个ViewModel,它通过它的基类实现INotifyPropertyChanged。 ViewModel包含一个属性,然后绑定到两个文本框。相关代码如下。

ViewModelBase

Public MustInherit Class ViewModelBase : Implements INotifyPropertyChanged
    Public Event PropertyChanged(sender As Object, e As PropertyChangedEventArgs) Implements INotifyPropertyChanged.PropertyChanged
    Protected Sub onPropertyChanged(propertyName As String)
        If Not propertyName Is Nothing Then RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyName))
    End Sub
End Class

视图模型

Public Class TemplateEditVM : Inherits ViewModelBase
    Public Property Name As String
      Get
        Return _Template.Name
      End Get
      Set(value As String)
        If Not _Template.Name = value Then
          _Template.Name = value
          onPropertyChanged("TemplateEditName")
        End If
      End Set
    End Property
End Class

查看

<TextBox Text="{Binding Path=Name}" />
<TextBox Text="{Binding Path=Name}" />

首次加载视图时,属性Name的值正确填充两个文本框。问题是,当我更改其中一个文本框中的文本时,另一个文本的文本不会更改,即使基础属性具有。如果我单步执行它,我可以看到PropertyChanged事件正在被触发。

有人可以告诉我为什么吗?非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

将绑定模式设置为Twoway

    <TextBox Text="{Binding Path=Name, Mode="TwoWay"}" />

你的propertyChanged方法应该数学你绑定的确切名称