2

私は WPF MVVM Light アプリケーションを開発しています。いくつかのメッセージ ボックス/ダイアログ ボックスを表示したい、またはビュー モデルがそのビューと通信したり、それぞれのビューでイベントを発生させたりする他のシナリオがあります。

どうすればそれを達成できますか?

4

3 に答える 3

2

MVVMLightのMessengerクラスを参照してください。MVVMライトをダウンロードする場合、デフォルトでサンプルが含まれているはずです。これはMessenger.Default.Send(new YourMessageClass())のようなもので、ビュー側でリスナーを登録できます。

于 2012-11-03T20:37:43.873 に答える
1

プリズム フレームワークには、この問題を解決するためのインタラクション リクエストの概念があります。良い例がここまたはここにあります

于 2012-11-03T20:34:57.963 に答える
1

ポップアップを表示する責任は、ViewModel の責任ではなく、「それを処理するサービス」であるべきです。

「ポップアップウィンドウ」が「ファイルを開くダイアログ」、「ファイルを保存するダイアログ」、メッセージボックス「OK/キャンセル」または「はい/いいえ」などのようなモーダルのようなウィンドウである場合、「サービス」は正しい選択。その理由は、単体テストのためにサービスを偽装/モックできるからです。

また、必要に応じて、このサービスのさまざまな実装を行うことができます。たとえば、デバッグ (r、ロールのタイプが管理者または開発者の場合) では、リリースまたは通常のユーザーよりも「詳細な」情報が得られます。

さて、「ViewModel が View とどのように通信するか」については、あなたが何を意味するのかわかりません。ViewModel にプロパティを追加し、ビューをそのプロパティにバインドするだけです。

于 2012-11-07T13:11:36.867 に答える