2014-12-02 90 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