私はしばらくの間 MVVM パターンを使用してきましたが、あるプロパティの値が別のプロパティの値に依存するというシナリオに頻繁に遭遇します。たとえば、高さと幅を持つコントロールがあり、高さと幅をフォーマットされた文字列 "{height} x {width}" としてコントロールに表示したいとします。したがって、ビュー モデルに次のプロパティを含めます。
public class FooViewModel : INotifyPropertyChanged
{
// . . .
private double _width;
public double Width
{
get { return _width; }
set
{
if(_width != value)
{
_width = value;
NotifyPropertyChanged("Width");
NotifyPropertyChanged("DisplayString"); // I had to remember to
// do this.
}
}
}
public string DisplayString
{
get
{
return string.Format("{0} x {1}", _width, _height);
}
}
// . . .
}
次に、my のコンテンツを DisplayString プロパティにバインドします。これは、 aを使用して Width および Height プロパティから変換するLabel
よりもはるかに便利です。IMultiValueConverter
不便な部分は、「Width」または「Height」の NotifyPropertyChanged が必要な場所ではどこでも、「DisplayString」の通知も忘れずに行う必要があることです。これをさまざまな程度で自動化する無数の方法を考えることができますが、私の質問は、MVVM でこれを行うために人々が一般的に使用する標準的な方法があるかどうかWPF
です。