Ma couche Application utilise DialogPresenters pour afficher certains ViewModels dans divers dialogues (modal, splash screen, etc.).Gestionnaires de commandes multiples MVVM
public DataImportDialogPresenter(DataImportViewModel viewModel, IDialogView shellView, IDialogView owner)
: base(viewModel, shellView, owner)
{
//Base sets the view data context etc.
//Monitor CancelCommand and close the dialog
viewModel.CancelCommand = new DelegateCommand(() => Terminate());
}
Cette configuration fonctionne très bien à l'exception du fait que si mon ViewModel décide qu'il a besoin de faire quelque chose sur le CancelCommand (ce qui est tout à fait raisonnable), il remplacera l'appel du présentateur à Terminate() ou vice-versa .
Ce que je voudrais faire est la suivante:
viewModel.CancelCommand += new DelegateCommand(() => Terminate());
Dans le même esprit que la fixation des gestionnaires d'événements.
- Est-ce possible en C# .NET 3.5?
- Comment l'obtenir?
- Est-ce une mauvaise pratique MVVM?
Merci
D
qui fonctionnera dans mon cas en cours d'utilisation. Ma seule préoccupation est que le viewmodel pourrait écraser la commande sans le savoir. – djskinner
Je vois votre point ... J'initialise habituellement la commande paresseusement dans le getter. Si vous faites cela, et ne changez jamais la commande par la suite, cela devrait fonctionner –