假设在一些抽象的 ViewModel 基类中,我有一个普通的旧属性,如下所示:
public Size Size
{
get { return _size; }
set
{
_size = value;
OnPropertyChanged("Size");
}
}
然后,我创建了一个更具体的 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 友好的方式来执行此操作。