2013-02-12 60 views
0

我正在开发一个使用MVVM设计模式的WPF应用程序。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}" /> 

属性名的值正确填充两个文本框中第一次加载时查看。问题是,当我更改其中一个文本框中的文本时,其他文本的文本不会更改,即使基础属性已经更改。如果我通过它,我可以看到PropertyChanged事件被触发。

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

回答

1

设置您的结合模式为双向

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

和您的PropertyChanged方法应数学的确切名称绑定到

+1

当然!我忘记了我改变了房产名称。顺便提一句,绑定不需要明确设置为TwoWay,因为我认为这是默认设置。谢谢! – 2013-02-12 10:20:42

+1

是的。澄清onPropertyChanged(“TemplateEditName”)应该是onPropertyChanged(“Name”)或者属性必须重命名。 – ChrisBD 2013-02-12 10:22:05

相关问题