|
分類:[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つであるべき!というような原則(?)から大きく外れているように思い、なんだか気持ち悪い状態です。
数人で使う社内ツールですので、このままでもいいのですが、後学のために教えてください。
#ソースに関しては全部のコピペが出来なかった(隠す部分が多かった)ので、テキストエディタで書いています。
#間違いがありましたご容赦下さい。
|