2012-01-02 69 views
0

我想了解WPF绑定。尽可能简单:如何获取绑定以在值更改时进行更新?

我有一个ClassWithProperty具有公共uint Prop1。

主窗口有一个公共ClassWithProp对象并将其用于数据上下文。这是设置在主视窗的构造函数:

this.ClassWithProp = new ClassWithProp(); 
this.DataContext = this.ClassWithProp; 

ClassWithProp的默认构造函数Porp1值为1

主要窗口包含一个标签:

<Label Content="{Binding Prop1}" ... /> 

它还包含一个按钮,当单击时,将ClassWithProp.Prop1设置为2.

当窗口第一次出现时,标签正确显示1.当按钮被单击时,属性的v alue更改为2,但标签不刷新。

对不起 - 也许很明显,但我在WPF新手:

为什么不绑定的标签更新时,则由底层属性更改?

+0

H.B.和slu - 子 - 谢谢你们俩的精彩答案。我真的希望我可以同时接受:( – Avi 2012-01-03 10:11:00

回答

2

您的ClassWithProperty需要实现INotifyPropertyChanged接口(它只有一个事件,PropertyChanged),这样WPF绑定子系统就可以侦听属性更改并更新值。如果您更改了某个属性的值,则会引发该事件。

下面是一个例子:

pulic class ClassWithProperty : INotifyPropertyChanged 
{ 
    public uint Prop1 
    { 
     get { return _prop1; } 
     set 
     { 
      _prop1 = value; 
      OnPropertyChanged("Prop1"); 
     } 
    } 

    protected void OnPropertyChanged(string propertyName) 
    { 
     if (this.PropertyChanged != null) 
      this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 


    private uint _prop1; 
} 
相关问题