我正在使用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
ViewModel
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}" />
首次加载视图时,属性"名称"的值将正确填充两个文本框。问题是,当我更改其中一个文本框中的文本时,另一个文本不会更改,即使底层属性已经更改。如果我仔细查看它,我可以看到PropertyChanged事件正在被激发。
有人能告诉我为什么吗?非常感谢您的帮助。
将绑定模式设置为Twoway
<TextBox Text="{Binding Path=Name, Mode="TwoWay"}" />
您的onpropertyChanged方法应该计算您绑定到的确切名称