10

私は新しいWPFアプリケーションに取り組んでおり、MVVMパターンにできるだけ近づけようとしています。現在、私のXAMLファイルにはコードビハインドがなく、すべての対話性はJoshSmithのRelayCommandクラスとViewModelクラスのコマンドを使用して実現されています。

これは、アバウトボックスやシステム環境設定ページなどのハウスキーピングタスクに取り掛かるまではうまく機能しました。これらをモーダルダイアログとして使用したいのですが、RelayCommandを作成してこれらのページを開くと、ビューモデル内のビューへの依存関係が作成されます。

これは、MVVMパターンの粒子に反して私を襲います。

依存関係を作成せずに、MVVMパターン内に新しいウィンドウ(モーダルおよび/またはモードレス)を作成するための確立された方法はありますか?ViewModelをクリーンに保つ唯一の方法は、XAML分離コードファイルにClickイベントハンドラーを作成し、古いビュー内に新しいビューを作成することです。

何かお勧めはありますか?

4

5 に答える 5

7

これを処理する1つの方法は、ViewModelsにビューを提供するサービスを実装することです。ビューはサービスに登録され、ViewModelsはサービスにダイアログを要求できます。これは、GangofFourメディエーターパターンの例です。

于 2009-08-25T05:35:05.610 に答える
1

Silverlight4のモーダルダイアログソリューションをご覧ください。

MVVMおよびSilverlight4を使用したモーダルダイアログ

于 2010-01-21T21:32:32.817 に答える
0

Laurent Bugnionには、参照が弱いメディエーターがあり、ダイアログメッセージを表示するためにそれを使用しています。ブロードキャストされるメッセージとともに、サブスクライバーが実行するためのコールバックデリゲートが送信されます。同じ概念を使用して、バージョン情報ダイアログを表示できます。こちらのソースからDialogMessage.csをチェックしてください。

于 2009-08-25T19:03:56.580 に答える
0

Windowクラス自体がViewModelである理由については、この質問に対する私の回答を参照してください。これにより、心配することなく、ViewModelから直接使用できます。

于 2009-08-25T12:05:52.637 に答える
0

UIワークフローを担当するControllerクラスを使用します。それらはモーダルウィンドウを作成し、さまざまなViewModel間を仲介します。

View-Model-ViewModel(MVVM)パターンでモーダルウィンドウを開く方法は、次のViewModelサンプルアプリケーションに示されています。

WPFアプリケーションフレームワーク(WAF)

http://waf.codeplex.com

于 2009-08-29T10:01:42.353 に答える