【发布时间】:2011-01-01 20:59:26
【问题描述】:
假设在一些抽象的 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 友好 的方式来做到这一点。
【问题讨论】:
标签: wpf mvvm inotifypropertychanged