В моем прикладном слое используется DialogPresenters для отображения некоторых ViewModels в различных диалоговых окнах (модальный, заставка и т. Д.).Многопользовательские манипуляторы 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());
}
Эта установка работает очень хорошо для того, что если мой ViewModel решает, что нужно сделать что-то на CancelCommand (что вполне разумно), за исключением, то он заменит призыв докладчика на Terminate() или наоборот ,
То, что я хотел бы сделать, это:
viewModel.CancelCommand += new DelegateCommand(() => Terminate());
В том же духе, как прикрепление обработчиков событий.
- Возможно ли это в C# .NET 3.5?
- Как я могу это достичь?
- Является ли это плохой практикой MVVM?
Благодаря
D
Это будет работать в моем текущем прецеденту. Моя единственная проблема заключается в том, что viewmodel может неосознанно перезаписать команду. – djskinner
Я вижу вашу точку ... Обычно я инициализирую команду лениво в геттере. Если вы это сделаете и никогда не меняете команду, она должна работать нормально –