私はWPFとMVVMを初めて使用しています。ウィンドウを閉じるのではなく、ウィンドウを最小化したいと思います。つまり、Closing
のイベントをキャンセルしてこのウィンドウを最小化したいと思います。WPF MVVMキャンセルウィンドウ閉じる
MVVMのやり方を教えてください。
最後に、ShowInTaskbar
をfalse
に設定し、WinFormsトレイコンポーネントを使用します。
私はWPFとMVVMを初めて使用しています。ウィンドウを閉じるのではなく、ウィンドウを最小化したいと思います。つまり、Closing
のイベントをキャンセルしてこのウィンドウを最小化したいと思います。WPF MVVMキャンセルウィンドウ閉じる
MVVMのやり方を教えてください。
最後に、ShowInTaskbar
をfalse
に設定し、WinFormsトレイコンポーネントを使用します。
MVVMと共通の誤解は決して、これまでビューにコードビハインドがあり得ることです。それは単に真実ではありません。
にコードコードビハインドを最小限に抑えているMVVMの目標は、しかし、直接ビュー(たとえば、Windowsのイベントなど)自身と対話するもののため、いくつかのコードビハインドに置くために許容され。コードビハインドはCancelを処理し、ViewModelでコマンドを呼び出すか、最小化するか、または他のものを呼び出すことができます。
それ以外の場合は、ViewModelでイベントを処理する複雑なシステムが必要になります。これは、ViewModelに(別の方法ではなく)Viewへの参照を持たせることによってMVVMパターンを壊します。
だけClosingイベントをオーバーライドして、次の操作を行います。
e.Cancel = true;
this.ShowInTaskbar = false;
this.WindowState = WindowState.Minimized;
完全に回答です。 – Robaticus
合理的に聞こえる。ありがとうございました! – prostynick
MVVMのポイントは、コード内でテスト可能になるビジネスロジックをテスト可能にすることです。インターフェイスを使用してビューを依存関係として取り入れることができれば、本当にこのコンセプトを破ることはできません。本当にあなたはActive Presenterパターンに近づいていますが、どちらも悪くありません。 – Agies