私は WPF で MVP/MV-VM を実装していますが、これまでのところうまくいっています。ただし、このモデルがモーダル ダイアログ ボックスの実装をどのようにサポートしているかはわかりません。私は Crack.NET ( http://www.codeplex.com/cracknetproject ) から自分の作品を派生させて、この作業がどのように機能するかを学びました。
メニューがある ShellView ビュー (単なる XAML) があります。このメニューは、「EditPreferences」という ShellModelView のコマンドにバインドされます。
ShellModelView は EditPreferences の ICommand を実装します。ここでは、ユーザーがアプリケーションの設定を編集できるようにするダイアログ ボックスを表示します。
ここにいくつかの問題があります: 1. ShellModelView には、ダイアログを適切に親にするための ShellView への参照がありません。ShellModelView は ShellView の DataContext ですが、セットアップされた後方参照が表示されません。2. いずれにせよ、ShellModelView は明示的な UI をロードするべきではありません。では、ここでの適切な対話モデルは何でしょうか? 3. ロジックとビューも適切に分離されるように、PreferencesDialog を構築するにはどうすればよいですか? PreferencesDialog 自体は Window である必要があるため、その上で ShowDialog を呼び出すことができますが、これはインスタンス化するために Window (View など) への参照が必要であることを意味します。理想的には、PreferenceDialog 内でビューをインスタンス化せずに (おそらくモック ビューを使用して) コード/検証を単体テストできるはずです。