WPF ダイアログ (ウィンドウの継承者) があります。ダイアログには、ViewModel の「処理」コマンドにバインドされた「OK」ボタンがあります。("process" コマンドは Josh Smith RelayCommand です。) "OK" ボタンの CommandParameter は、ダイアログ ウィンドウ自体に設定されます。処理が成功すると、ViewModel のコマンド ハンドラー内からダイアログ ウィンドウが閉じられます。それは、私には単一責任の原則に違反しているように思えます。呼び出し元のウィンドウを閉じる場合と閉じない場合があるコマンドの正しいパターンは何ですか?
質問する
111 次
1 に答える
1
一部のデザイン パターンが壊れているように見えますが、ダイアログを閉じる、特定の状態を設定するなどの特定のタスクを実行するために、ViewModel がその View を認識している可能性があるという一般的な慣行があります。
View と ViewModel のバインド中に、View への参照を使用して ViewModel を初期化できます。後で Command を実行することにより、ViewModel は、共通のインターフェイスを使用してビューによって提供される機能を使用できます。
あなたの場合、 Window を として渡すのではなく、このようにすることをお勧めします ( Caliburn MicroCommandParameter
のように) 。
于 2012-08-03T19:39:06.990 に答える