次の記事に基づいて、MVVM パターンを使用して WPF アプリケーションを作成しています: WPF Apps With The Model-View-ViewModel Design Pattern
ビューに 2 つのボタンがあり、ボタンの「コマンド」プロパティが (データ バインディングで) RelayCommand クラスの特定のインスタンスにバインドされています (上記の記事の「図 3 The RelayCommand クラス」を参照)。RelayCommand クラスは、指定されたコマンドを実行できるかどうかのチェックをサポートしています。
WPF は、コマンドを実行できないボタンを自動的に無効にします。
私の各コマンド (ViewModel クラス内) はバックグラウンド操作を開始し、バックグラウンド操作が終了するまでコマンドを再度実行することはできません。RelayCommand インスタンスには、バックグラウンド操作がまだ機能しているか、完了しているかに関する情報があります。
私の問題は次のとおりです。いずれかのボタンを押した後、バックグラウンド操作が開始され、コマンドが完了するまでコマンドを実行できないため、ボタンは自動的に無効になります(これは問題ありません)が、操作が完了すると、ボタンは無効になります。コマンドの「実行可能」述語が自動的に再評価されないため、自動的に有効になりません。再評価は、アプリケーションを緩めてフォーカスを取り戻す (ALT + TAB を押す) ことにより、手動でトリガーできます。このトリックを実行すると、ボタンが再び有効になります。
ボタンのコマンドの「実行可能」状態をプログラムで再評価するにはどうすればよいですか?