Maison >développement back-end >C++ >RelayCommand vs ICommand simplifié : quel est le meilleur pour MVVM ?
Explication détaillée du modèle RelayCommand dans l'implémentation simplifiée de MVVM
Dans l'architecture MVVM (Model-View-ViewModel), créer plusieurs commandes peut être une tâche fastidieuse. Ce problème a donné lieu à diverses solutions, notamment une approche simplifiée utilisant une seule classe ICommand.
Implémentation simplifiée des commandes
La classe ICommand implémentée contient deux méthodes déléguées : OnExecute (renvoie void) et OnCanExecute (renvoie bool). Dans le constructeur, ces méthodes sont passées en paramètres. Les méthodes CanExecute et Execute de l'interface ICommand appellent les méthodes déléguées correspondantes.
Avantages des commandes simplifiées
Explorez les alternatives : RelayCommand
Une alternative courante à la simplification des commandes est la RelayCommand, comme l'a démontré Karl Shifflet. Il utilise Action
Mise en œuvre de RelayCommand
RelayCommand utilise Predicate
Avantages de RelayCommand
Exemple d'utilisation
Les commandes simplifiées et RelayCommand peuvent être utilisées de la même manière dans ViewModel :
<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>
Conclusion
Bien que RelayCommand fournisse une solution intéressante, RelayCommand offre des avantages supplémentaires tels que la notification automatique des changements de propriété et la prise en charge des paramètres. Les deux méthodes peuvent simplifier efficacement la mise en œuvre des commandes MVVM, permettant aux développeurs de se concentrer sur la logique de l'application plutôt que sur le code passe-partout.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!