MVVM - RaisePropertyChanged将代码变成一团糟

vid*_*oon 9 silverlight mvvm silverlight-3.0

MVVM的新手,请原谅我的无知.

我认为我正确使用它,但我发现我的ViewModel有太多这些:

RaisePropertyChanged("SomeProperty")
Run Code Online (Sandbox Code Playgroud)

每次我设置一个房产,我都要提高那个该死的房产.

我想念我可以去的日子:

public int SomeInteger { get; private set;}
Run Code Online (Sandbox Code Playgroud)

这些天我必须在任何地方坚持"RaisePropertyChanged"或我的UI不反映变化:(

我做错了还是其他人对过多的魔法字符串和旧学校的业主制定者感到恼火?

我应该使用依赖属性吗?(我怀疑这会对代码膨胀有帮助)

尽管存在这些问题,我仍然认为MVVM是要走的路,所以我想这就是问题.

Eni*_*ity 12

看看你看到的扩展方法的最佳或最有趣的用途是什么?.

它描述了我的Model和ViewModel类用于启用以下强类型(无魔术字符串)属性的扩展方法和辅助方法.

private string _name;
public string Name
{
    get { return _name; }
    set { this.NotifySetProperty(ref _name, value, () => this.Name); }
}
Run Code Online (Sandbox Code Playgroud)

这就像我认为的那样简单.希望能帮助到你.


PL.*_*PL. 7

您可以使用PostSharp的NotifyPropertyChanged属性.然后你所要做的就是在类上放置一个属性,就是这样.例如:

[NotifyPropertyChanged]
public class MyClass 
{
    public string MyProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

  • 没有运行时开销,因为PostSharp只是修改​​编译的类并注入您手动编写的完全相同的代码.有一个小的构建时间开销,但我发现它可以忽略不计. (3认同)