Detaillierte Erläuterung des RelayCommand-Musters in der vereinfachten MVVM-Implementierung
In der MVVM-Architektur (Model-View-ViewModel) kann das Erstellen mehrerer Befehle eine mühsame Aufgabe sein. Dieses Problem hat zu verschiedenen Lösungen geführt, einschließlich eines vereinfachten Ansatzes mit einer einzigen ICommand-Klasse.
Vereinfachte Befehlsimplementierung
Die implementierte ICommand-Klasse enthält zwei Delegate-Methoden: OnExecute (gibt void zurück) und OnCanExecute (gibt bool zurück). Im Konstruktor werden diese Methoden als Parameter übergeben. Die Methoden CanExecute und Execute der ICommand-Schnittstelle rufen die entsprechenden Delegate-Methoden auf.
Vorteile vereinfachter Befehle
Alternativen entdecken: RelayCommand
Eine gängige Alternative zur Vereinfachung von Befehlen ist RelayCommand, wie von Karl Shifflet demonstriert. Es verwendet Action
Implementierung von RelayCommand
RelayCommand verwendet Predicate
Vorteile von RelayCommand
Anwendungsbeispiel
Vereinfachte Befehle und RelayCommand können in ViewModel auf ähnliche Weise verwendet werden:
<code>public class MyViewModel { // 简化命令 public ICommand DoSomethingCommand { get; set; } // RelayCommand public ICommand DoSomethingCommand2 { get; set; } public MyViewModel() { // 简化命令 DoSomethingCommand = new TestCommand(CanDoSomething, DoSomeImportantMethod); // RelayCommand DoSomethingCommand2 = new RelayCommand(CanDoSomething, DoSomeImportantMethod); } // ... }</code>
Fazit
Während RelayCommand eine nette Lösung bietet, bietet RelayCommand zusätzliche Vorteile wie automatische Benachrichtigung über Eigenschaftsänderungen und Parameterunterstützung. Beide Methoden können die Implementierung von MVVM-Befehlen effektiv vereinfachen, sodass sich Entwickler auf die Anwendungslogik statt auf Standardcode konzentrieren können.
Das obige ist der detaillierte Inhalt vonRelayCommand vs. vereinfachtes ICommand: Welches ist das Beste für MVVM?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!