Cha*_*lie 15 wpf mvvm inotifypropertychanged
让我们说一些抽象的ViewModel基类我有一个普通的属性如下:
public Size Size
{
get { return _size; }
set
{
_size = value;
OnPropertyChanged("Size");
}
}
Run Code Online (Sandbox Code Playgroud)
然后我创建一个更具体的ViewModel,继承自前一个,包含以下属性:
public Rect Rectangle
{
get { return new Rect(0, 0, _size.Width, _size.Height); }
}
Run Code Online (Sandbox Code Playgroud)
现在,在一些View类中,我绑定到前面提到的ViewModel的Rectangle属性.一切正常,直到我改变大小.当Size变化,Rectangle不知道它和变化不会传播到视图.因为Rectangle在子类中,我不能简单地添加OnPropertyChanged("Rectangle")到Sizesetter.
现在假设我有许多不同的属性Rectangle,它们都依赖于基类属性,并且没有传播这些更改.我需要一些轻量级和优雅的链接更改通知的方法,最好是不需要大量代码并且不强迫我使用依赖项属性的方法.
显然这里有很多丑陋的解决方案 - 我正在寻找的是干净而聪明的东西.在我看来,这将是一个非常常见的场景,在我看来可能有一种MVVM友好的方式来做到这一点.
我最近在博客上写到了这个确切的问题.我[DependsUpon("Size")]在Rectangle中包含一个属性.我真的很喜欢这种方法,因为它将依赖性知识与创建依赖性的代码保持在一起,而不是相反.
看看:http://houseofbilz.com/archive/2009/11/14/adventures-in-mvvm----dependant-properties-with-inotifypropertychanged.aspx
| 归档时间: |
|
| 查看次数: |
5725 次 |
| 最近记录: |