1

プロパティの1つが変更されたときにテキストボックスを更新するために使用したいクラスがあります。また、テキストボックスが変更されたときにクラス プロパティを変更できるようにしたいと考えています。つまり、双方向のデータバインディングができるようにしたいのです。オンラインで調べたところ、すべての例で XAML ファイルが必要です。私は XAML に詳しくないので、可能であれば避けたいと思います。

XAML を使用せずにクラスで双方向のデータ バインディングを行うことは可能ですか?

アップデート:

これを見つけましたhttp://msdn.microsoft.com/en-us/library/ms743695%28v=vs.110%29.aspx、動作しているようです。しかし、私はそれが何をしているのか完全には理解していません。

具体的には、PropertyChanged と OnPropertyChanged が互いにどのように関係しているかがわかりません。

4

1 に答える 1

2

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)あなたは、オブザーバーがいる場合にのみ信号を送信すると言います。

もしそうなら、次の行で実際にシグナルを送ります。

于 2014-12-02T18:55:53.667 に答える