|  | 分類:[C#]
 
 
 まずタイトルの文字数制限でうまく表現できなかったので、そこだけ訂正します。
「プロパティのセッター内で別プロパティのPropertyChangedイベントを発火してもいいですか?」
開発環境:VS2013 Update4
言語:C#, WPF
.NET Framework 4.5
class HogeCollection : INotyfiPropertyChanged
{
  private List<Hoge> hogeList = new List<Hoge>();
  private int index;
  public int Index
  {
    get{return index;}
    set
    {
      index = value;
      RaisePropertyChanged("Index");
      RaisePropertyChanged("Hoge);
    }
  }
  
  public HogeDetail Hoge
  {
    get {return hogeList[Index]; }
  }
  
  #region INotifyPropertyChanged メンバー
  public event PropertyChangedEventHandler PropertyChanged;
  protected void RaisePropertyChanged(string propertyName)
  {
    var h = PropertyChanged;
    if (h != null)
      h(this, new PropertyChangedEventArgs(propertyName));
  }
  #endregion
}
上記の様なHogeCollectionクラスで、Indexプロパティの値が変更された場合に、Indexプロパティのセッター内でRaisePropertyChanged("Hoge")を発火してもいいのでしょうか?
HogeプロパティはWindow側にバインドされ、さらにその中身も細かくバインドするソフトを作っています。
戻る/進むボタンでhogeListに登録されているインスタンスを切り替えて表示させたいので、上記の様な実装を行い試したところうまく動いているようです。
しかし、IndexプロパティでRaisePropertyChanged("Hoge")をしている現状は「良い」状態なのでしょうか?
たとえば、メソッドの責務は1つであるべき!というような原則(?)から大きく外れているように思い、なんだか気持ち悪い状態です。
数人で使う社内ツールですので、このままでもいいのですが、後学のために教えてください。
#ソースに関しては全部のコピペが出来なかった(隠す部分が多かった)ので、テキストエディタで書いています。
#間違いがありましたご容赦下さい。
 |