In der häufig verwendeten WPF-Entwicklung implementieren wir die INotifyPropertyChanged-Schnittstelle im ViewModel, um den Zweck zu erreichen, UI-Änderungen durch Auslösen des PropertyChanged-Ereignisses zu benachrichtigen.
Im MVVMLight-Framework wird das hier definierte ViewModel von ViewModelBase übernommen, das im MvvmLight-Framework gekapselt ist und die INotifyPropertyChanged-Schnittstelle implementiert hat.
Daher müssen wir bei der Definition der ViewModel-Eigenschaft nur RaisePropertyChanged(PropertyName) aufrufen, um die Eigenschaftsänderung zu benachrichtigen.
Ereignisse sind die wichtigste Methode, wie die Benutzeroberfläche mit Hintergrundcode in WPF/SL-Anwendungen interagiert, und im Gegensatz zu herkömmlichen Methoden werden Ereignisse hauptsächlich durch Bindung an Befehle in mvvm bearbeitet. Um also zu verstehen, wie Ereignisse in mvvm gehandhabt werden, musst du zunächst mit der Funktionsweise von Befehlen vertraut sein.
1. RelayCommand-Kommando
WPF/SL-Befehle werden durch die Implementierung der ICommand-Schnittstelle erstellt. ICommand stellt zwei Methoden (Execute und CanExecute) sowie ein Ereignis (CanExecuteChanged) bereit. Ausführen führt die mit dem Befehl verbundene Aktion aus. CanExecute bestimmt, ob ein Befehl auf dem aktuellen Befehlsziel ausgeführt werden kann. Die Klasse, die die ICommand-Schnittstelle in MvvmLight implementiert, ist RelayCommand, die die Execute- und CanExecute-Methoden über den Konstruktor initialisiert, sodass der Konstruktor die Parameter des Delegiertentyps übergibt, und Execute und CanExecute die delegierten Methoden ausführen, wobei der relevante Code von RelayCommand wie folgt lautet:
2. Comand-Attributbindung
Einfaches Beispiel: Ein TextBox und ein Button, das TextBox ist nur verfügbar, wenn der Inhalt nicht leer ist, und der verfügbare Button wird angeklickt, um den Inhalt der TextBox anzuzeigen.
ViewMode:
|