2014-12-02 91 views
0

我有一個類,我想用它來更新文本框,當它的一個屬性發生變化時。我也希望能夠在文本框更改時更改類屬性。換句話說,我希望能夠進行雙向數據綁定。我在網上查看,所有示例都需要一個XAML文件。由於我對XAML不熟悉,如果可能的話,我希望遠離這一點。沒有XAML的雙向數據綁定

是否有可能與一個類的雙向數據綁定,而不使用XAML?

更新:

我發現這個http://msdn.microsoft.com/en-us/library/ms743695%28v=vs.110%29.aspx,它似乎工作。但是,我並不完全明白它在做什麼。

更具體地說,我不明白PropertyChanged和OnPropertyChanged如何相互關聯。

+0

它是一個WPF應用程序? – Sajeetharan 2014-12-02 18:24:11

+0

不,它是一個WinForm(C#)應用程序。 – user2970916 2014-12-02 18:28:41

+0

你介意使用ReactiveUI框架嗎?雖然我沒有使用它的WinForms它支持它。 http://stackoverflow.com/questions/24768640/reactiveui-6-0-and-winforms-binding – kenny 2014-12-02 18:34:43

回答

1

在C#WPF中,實現INotifyPropertyChanged時會得到PropertyChanged。

所以,如果你寫

PropertyChanged(this, new PropertyChangedEventArgs("PersonName")); 

你給觀察者(XAML)的信號,即物業PersonName改變,這將更新所有例如鏈接到該屬性的UIElements。

隨着

protected void OnPropertyChanged(string name) 
    { 
     PropertyChangedEventHandler handler = PropertyChanged; 
     if (handler != null) 
     { 
      handler(this, new PropertyChangedEventArgs(name)); 
     } 
    } 

你重載屬性(例如PERSONNAME)的名稱作爲一個字符串到信號,該信號屬性已經改變。

隨着if(handler != null)你說你只發送信號,如果有任何觀察員。

如果是這樣,在下一行你真的給信號。

+0

謝謝。我有一種感覺,我從INotifyPropertyChanged獲得PropertyChanged。觀察者何時創建? – user2970916 2014-12-02 19:00:55

+0

只要XAML中的UIElement對此對象具有綁定,例如TextBox的文本屬性 – 2014-12-02 20:06:57