2016-04-17 86 views
0

我将Postharp实施到使用MVVM-Light制作的现有项目中。我定义我的视图模型属性如下:NotifyPropertyChanged属性产生编译器错误

public WindowState WindowState 
{ 
    get 
    { 
     return windowState; 
    } 

    set 
    { 
     if(windowState != value) 
     { 
      windowState = value; 
      RaisePropertyChanged("WindowState"); 
     } 
    } 
} 

我实现PostSharp的NotifyPropertyChanged属性:

[NotifyPropertyChanged] 
public class MainViewModel : ViewModelBase 
{ 
    public WindowState WindowState { get; private set; } 
} 

现在启动程序,当我得到这个编译错误:

Class ViewModels.MainViewModel implements INotifyPropertyChanged but does not define an OnPropertyChanged method with the following signature: void OnPropertyChanged(string propertyName)

我是否必须将这种方法实现到我的viewmodel中,甚至是实现一个被覆盖的ViewModelBase?

+1

是的。当你继承一个类时,经常需要实现与继承类关联的方法。在这种情况下,需要更改事件来通知Window Paint方法以使用新数据更新窗口。请参阅:https://www.postsharp.net/model/inotifypropertychanged – jdweng

+0

对我来说,这是“大规模缩减”的区别。我能否将这个方法覆盖到从ViewModelBase继承的基类中?我想保留这种方法在我的ViewModel实现中。 – chris579

+0

是或另一个.cs模块中的另一个部分类。 – jdweng

回答

0

将属性[NotifyPropertyChanged]仅应用于类ViewModelBase。它将通过继承传递给后代类。