2011-01-31 28 views
2

私はWPFとMVVMを初めて使用しています。ウィンドウを閉じるのではなく、ウィンドウを最小化したいと思います。つまり、Closingのイベントをキャンセルしてこのウィンドウを最小化したいと思います。WPF MVVMキャンセルウィンドウ閉じる

MVVMのやり方を教えてください。

最後に、ShowInTaskbarfalseに設定し、WinFormsトレイコンポーネントを使用します。

答えて

9

MVVMと共通の誤解は決して、これまでビューにコードビハインドがあり得ることです。それは単に真実ではありません。

にコードコードビハインドを最小限に抑えているMVVMの目標は、しかし、直接ビュー(たとえば、Windowsのイベントなど)自身と対話するもののため、いくつかのコードビハインドに置くために許容され。コードビハインドはCancelを処理し、ViewModelでコマンドを呼び出すか、最小化するか、または他のものを呼び出すことができます。

それ以外の場合は、ViewModelでイベントを処理する複雑なシステムが必要になります。これは、ViewModelに(別の方法ではなく)Viewへの参照を持たせることによってMVVMパターンを壊します。

+1

完全に回答です。 – Robaticus

+0

合理的に聞こえる。ありがとうございました! – prostynick

+0

MVVMのポイントは、コード内でテスト可能になるビジネスロジックをテスト可能にすることです。インターフェイスを使用してビューを依存関係として取り入れることができれば、本当にこのコンセプトを破ることはできません。本当にあなたはActive Presenterパターンに近づいていますが、どちらも悪くありません。 – Agies

1

だけClosingイベントをオーバーライドして、次の操作を行います。

e.Cancel = true; 
this.ShowInTaskbar = false; 
this.WindowState = WindowState.Minimized; 
関連する問題