提高财产的更好方法改变了MVVMLight

Ada*_*dam 3 c# wpf mvvm

使用MVVM Light创建了一个项目.ViewModels通常有很多看起来像这样的属性

class TestModel
{
    public string DisplayValue { get; set; }
}

class TestViewModel : ViewModelBase
{
    public string DisplayValue
    {
         private TestModel model = new TestModel();

         get
         {
              return model.DisplayValue;
         }
         set
         {
              if (model.DisplayValue != value)
              {
                   model.DisplayValue = value;
                   RaisePropertyChanged();
              }
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

有时,该属性不在模型中,而是由本地私有字段支持.这种方法工作正常,但有大量的样板代码.如何减少代码重复?

有没有比我提出的解决方案更好的解决方案,还是我错过了MVVM Light内置的东西?

dot*_*NET 10

我的样板文件MVVM Light属性如下所示:

private string _Prop = "";

public string Prop
{
  get { return _Prop; }
  set { Set(ref _Prop, value); }
}
Run Code Online (Sandbox Code Playgroud)

通过使用Set底层ObservableObject类提供的功能(也可以使用ViewModelBase),这几乎是最薄的一个.

  • 你可以省略 `nameof(Prop)`,重载之一使用 CallerMemberName 所以 `set { ref _Prop, value); }` 给出相同的结果 (3认同)
  • @gts13:我认为确实如此。 (2认同)