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