2012-01-02 25 views
0

私はWPFバインディングを理解しようとしています。それは簡単に取得できます:値が変更されたときにバインディングを更新する方法を教えてください。

私には、公共財Prop1を持つClassWithPropertyがあります。

メインウィンドウには、パブリックClassWithPropオブジェクトがあり、データコンテキストに使用します。これは、メインのWindowsのコンストラクタで設定されている:

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

ClassWithPropのデフォルトコンストラクタは、1

メインウィンドウにPorp1値を設定し、ラベルが含まれています

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

また、そのボタンが含まれています、クリックすると、ClassWithProp.Prop1が2に設定されます。

ウィンドウが最初に表示されると、ラベルに正しく1が表示されます。ボタンをクリックするとプロパティのv alueは2に変更されますが、lableは更新されません。

申し訳ありません - おそらく明白私はWPFの初心者だ:

ないのはなぜ結合した標識の更新時にundelyingプロパティの変更?

+0

H.B.そしてスラブスター - 素晴らしい答えの両方をありがとう。私は本当に両方を受け入れることができたらいいと思う:( – Avi

答えて

2

ClassWithPropertyは、インターフェイス(これには1つのイベントがある、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; 
} 
2

ImplementINPC

また、the overviewも読んで、おそらく人々がデータバインディングについて持っている質問の90%以上に答えます。

関連する問題