Я реализую MVP/M-V-VM в WPF, и до сих пор мне повезло. Однако я не вижу, как эта модель поддерживает реализацию диалоговых окон Modal. Я получил свою работу от Crack.NET (http://www.codeplex.com/cracknetproject), чтобы узнать, как это работает.Модель-просмотр-презентатор и модальные диалоговые окна .... Как?
У меня есть представление ShellView (это просто XAML), на котором есть меню. Меню привязывается к команде в ShellModelView, которая говорит «EditPreferences».
ShellModelView реализует ICommand для EditPreferences, и здесь мы хотим установить диалоговое окно, позволяющее пользователю редактировать настройки для приложения.
Несколько проблем здесь: 1. ShellModelView не имеет ссылки на ShellView, чтобы правильно родительский диалог. ShellModelView - это DataContext для ShellView, но я не вижу настройки backreference. 2. ShellModelView не должен загружать явный пользовательский интерфейс в любом случае. Итак, какая здесь модель взаимодействия? 3. Как я могу создать свой PreferencesDialog так, чтобы он был правильно разделен между логикой и представлением? PreferencesDialog сам должен быть Окно, чтобы вы могли вызвать ShowDialog, но это означает, что вам нужна ссылка на Окно (например, View), чтобы создать экземпляр. В идеале я должен уметь тестировать код/валидацию в PreferencesDialog без создания экземпляра представления (возможно, с помощью Mock-просмотра?).
Я думал, что одна из целей MVVM является достижение не имея ViewModel знает вещь о View (или диалог в вашем примере)? Чтобы любое количество Views (или none) могло использовать ViewModel в любое время. Когда ваш ViewModel задает вещи на интерфейсе вида, это нарушает это. – 2009-08-11 06:13:37