2012-01-02 71 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; 
} 
相關問題