私はPostharpをMVVM-Lightで作成した既存のプロジェクトに実装しました。NotifyPropertyChanged属性でコンパイラエラーが発生する
Class ViewModels.MainViewModel implements INotifyPropertyChanged but does not define an OnPropertyChanged method with the following signature: void OnPropertyChanged(string propertyName)
:プログラムを起動するとき、私は、このコンパイルエラーを取得今
[NotifyPropertyChanged]
public class MainViewModel : ViewModelBase
{
public WindowState WindowState { get; private set; }
}
:私はPostSharpのNotifyPropertyChanged
属性を実装
public WindowState WindowState
{
get
{
return windowState;
}
set
{
if(windowState != value)
{
windowState = value;
RaisePropertyChanged("WindowState");
}
}
}
:私は次のようのviewmodelで、私のプロパティを定義し私はそのようなメソッドを自分のビューモデルに実装する必要がありますか、またはオーバーライドされたViewModelBaseに実装する必要がありますか?
はい。クラスを継承するときは、継承されたクラスに関連付けられたメソッドを実装する必要があることがよくあります。この場合、ウィンドウペイントメソッドに新しいデータでウィンドウを更新するよう通知するために、変更イベントが必要です。参照してください:https://www.postsharp.net/model/inotifypropertychanged – jdweng
これは私にとっては「大規模なコードの削減」の違いです。このメソッドのオーバーライドをViewModelBaseを継承する基本クラスに実装できますか?私はそのようなメソッドをViewModel実装から外しておきたい。 – chris579
はい、または別の.csモジュールの別の部分クラスです。 – jdweng