Ich habe Postharp in mein bestehendes Projekt mit MVVM-Light implementiert. I definiert meine Objekte im Ansichtsmodell, wie folgend:NotifyPropertyChanged Attribut erzeugt Compiler Fehler
public WindowState WindowState
{
get
{
return windowState;
}
set
{
if(windowState != value)
{
windowState = value;
RaisePropertyChanged("WindowState");
}
}
}
I Postsharp des NotifyPropertyChanged
Attribut implementiert:
[NotifyPropertyChanged]
public class MainViewModel : ViewModelBase
{
public WindowState WindowState { get; private set; }
}
Jetzt habe ich diesen Compiler-Fehler erhalten, wenn Sie das Programm starten:
Class ViewModels.MainViewModel implements INotifyPropertyChanged but does not define an OnPropertyChanged method with the following signature: void OnPropertyChanged(string propertyName)
Muss ich eine solche Methode in mein Viewmodel oder sogar in eine überschriebene ViewModelBase implementieren?
Ja. Wenn Sie eine Klasse erben, müssen häufig Methoden implementiert werden, die der geerbten Klasse zugeordnet sind. Das Änderungsereignis wird in diesem Fall benötigt, um die Window Paint-Methode anzuweisen, das Fenster mit neuen Daten zu aktualisieren. Siehe: https://www.postsharp.net/model/inotifypropertychanged – jdweng
Gut für mich ist das der Unterschied von "Massive Code Reduction.". Kann ich diese Methodenüberschreibung in eine Basisklasse implementieren, die von ViewModelBase erbt? Ich möchte solche Methoden aus meiner ViewModel-Implementierung heraushalten. – chris579
Ja oder eine andere Teilklasse in einem anderen .cs-Modul. – jdweng