私は今日のほとんどを、WPF/MVVM でダイアログを閉じるためのさまざまなアプローチを理解することに費やしました。ほとんどの回答は、はい/いいえの確認ダイアログなど、単純なダイアログに焦点を当てています。ただし、実際にいくつかのアクションを実行するダイアログのより複雑なケースについては誰も説明していないようです。これらのアクションは、トランザクション方式でコミットする必要があります。
ViewModel でバインドされたコマンドを呼び出す [OK] ボタンがあります。すべて良好。
コマンドが成功した場合はウィンドウを閉じたいのですが、コマンドが失敗した場合はウィンドウを閉じたくありません。
何時間にもわたる調査の結果、世界の誰も同様の問題を解決したことはないようだという結論に達しました:|
私が発明したが、まだ実装していない解決策は次のとおりです。
ConditionalCloseWindowウィンドウをパラメーターとして取り、ウィンドウを閉じるコマンドがあります。コマンドには
ConditionalCloseWindow添付プロパティがあります。public static readonly DependencyProperty 条件 = DependencyProperty.RegisterAttached("Condition", typeof(ICommand), ... 省略コマンドを実行する
ConditionalCloseWindowと、最初にコマンドが実行されConditionます。Conditionコマンドの実行が成功した場合にのみ、ConditionalCloseWindow実際にClose().
そのような解決策についてどう思いますか。それは完全に無効ですか?それとも、私の研究で発見できなかったのは、受け入れられているパターンなのでしょうか?