


Comment puis-je créer des implémentations ICommand réutilisables dans le modèle MVVM de WPF ?
Jan 20, 2025 pm 05:36 PMRationalisation de l'implémentation d'ICommand dans le modèle MVVM de WPF
Dans l'architecture Model-View-ViewModel (MVVM) de WPF, l'implémentation fréquente d'ICommand est courante. La création de nombreuses classes ICommand individuelles peut conduire à un code répétitif. Cet article propose une solution pour les implémentations réutilisables d'ICommand afin d'améliorer l'efficacité.
Une approche simple implique une seule classe ICommand exploitant deux méthodes déléguées : une pour Execute
et une pour CanExecute
. Le constructeur accepte ces délégués, en les invoquant dans les méthodes ICommand.
Cependant, une alternative supérieure, raffinée à partir du concept initial de Karl Shifflet, est le RelayCommand
.
Exploiter le RelayCommand
La classe RelayCommand
implémente l'interface ICommand
, en utilisant Action<T>
et Predicate<T>
pour Execute
et CanExecute
respectivement. Cela offre une méthode plus compacte et adaptable pour la mise en œuvre d'ICommand.
public class RelayCommand : ICommand { private readonly Predicate<object> _canExecute; private readonly Action<object> _execute; public RelayCommand(Predicate<object> canExecute, Action<object> execute) { _canExecute = canExecute; _execute = execute; } // ICommand implementation // ... }
L'intégration RelayCommand
dans les classes ViewModel simplifie l'instanciation d'ICommand.
public class MyViewModel { private ICommand _doSomething; public ICommand DoSomethingCommand { get { if (_doSomething == null) { _doSomething = new RelayCommand( p => this.CanDoSomething(), p => this.DoSomeImportantMethod()); } return _doSomething; } } }
Résumé
Bien qu'une implémentation ICommand personnalisée avec des délégués soit fonctionnelle, le RelayCommand
fournit une solution plus élégante et flexible. L'adoption de RelayCommand
rationalise considérablement la mise en œuvre d'ICommand dans les projets MVVM.
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!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Gulc: Cibliothèque C construite à partir de zéro

Quels sont les types de valeurs renvoyées par les fonctions du langage C? Qu'est-ce qui détermine la valeur de retour?

C Fonction Langue Format de lettre ÉTAPES DE CONVERSION DE CAS

Quelles sont les définitions et les règles d'appel des fonctions du langage C et quelles sont les

Utilisation distincte et partage de phrases

Où est la valeur de retour de la fonction de langue C stockée en mémoire?

Comment fonctionne la bibliothèque de modèle standard C (STL)?

Comment utiliser efficacement les algorithmes du STL (trier, trouver, transformer, etc.)?
