【发布时间】:2018-05-12 03:11:23
【问题描述】:
目前我正在使用 MVVM 风格的 WPF 应用程序进行编码。
我想用一些新的东西来扩展我当前的 BaseViewModel,让事情变得更容易和更快。
我要添加的一项功能是观察所有属性(具有特定属性)并在默认更改属性时调用PropertyChanged 事件。
(这个功能更多的是懒惰,所以没那么重要但是不知道怎么实现)
目前我在子类中定义一个属性,如下所示:
private string _foo;
public string Foo
{
get { return _foo; }
set { _foo = value; OnPropertyChanged(); }
}
我打算定义如下属性(因为它更快且代码更少):
[Observe]
public string Foo { get; set; }
当调用“set”方法时,是否有任何有效的方法可以为每个子类中的每个“标记”属性默认调用属性更改事件?
【问题讨论】:
-
虽然可以进行一些花哨的动态代码生成,但它比它更值得。如果编写代码太乏味,我建议创建一个 sn-p。
-
我不确定您为什么要标记属性以便稍后通知。你可以提前通知。解决方案很可能涉及在运行时可能非常慢的属性和反射。另一种解决方法是在属性更改时更新
ViewModel的Model,以便您可以跟踪数据的每次更改。 -
我建议看看 MVVM light 是如何做到这一点的。没有注释,但他们有一个
Set方法,可以执行所有检查并在必要时 RaisePropertyChange。示例:mvvmlight.net/help/SL5/html/… -
顺便说一句,如果您正在为此寻找一段反射代码,我建议您在没有 mvvm 和 wpf 标签的情况下提问