いくつかの抽象ViewModel基本クラスで、次のような単純な古いプロパティがあるとしましょう。
public Size Size
{
get { return _size; }
set
{
_size = value;
OnPropertyChanged("Size");
}
}
次に、次のプロパティを含む前のViewModelを継承して、より具体的なViewModelを作成します。
public Rect Rectangle
{
get { return new Rect(0, 0, _size.Width, _size.Height); }
}
ここで、一部のViewクラスで、前述のViewModelのRectangle
プロパティにバインドします。サイズを変更するまで、すべて正常に動作します。Size
変更された場合、Rectangle
それについては知らず、変更はビューに伝播されません。また、Rectangle
は子クラスであるOnPropertyChanged("Rectangle")
ため、Size
セッターに単純にを追加することはできません。
ここで、のような多くの異なるプロパティがRectangle
あり、それらはすべて基本クラスのプロパティに依存しており、これらの変更はいずれも伝播されていないことを想像してください。変更通知を連鎖させるための軽量でエレガントな方法が必要です。できれば、多くのコードを必要とせず、依存関係のプロパティを使用する必要がない方法が必要です。
明らかに、ここには醜い解決策がたくさんあります-私が探しているのは、クリーンで賢いものです。これは非常に一般的なシナリオであるように思われ、MVVMに適した方法があるように思われます。