2013-02-12 27 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

相關問題