BackgroundWorker
MVVM アプリケーションに応答性の高い UI を実装しようとしているので、UI をブロックしないように、すべてのコマンド ハンドラーを自動的に実行するように選択しました。
しかし同時に、バックグラウンドで実行中にユーザーが同じコマンドを実行できるようにしたくありません。解決策は明らかです:
Executed
ハンドラーが呼び出されたら、CanExecute
ハンドラーを返すfalse
BackgroundWorker
非同期を開始するBackgroundWorker
終了したら、CanExecute
ハンドラーtrue
を再び戻します。
問題は、ステップ1の後とステップ3の後にWPFに通知する必要があり、CanExecute
変更が必要であることです。を呼び出すことで実行できることはわかっていますがCommandManager.InvalidateRequerySuggested
、これにより、CanExecute
他のすべてのコマンドのハンドラーも再クエリされます。たくさんのコマンドを持っているのは良くありません。
特定のコマンド、つまり現在実行中のコマンドの再クエリを要求する方法はありますか?
ティア