私のウィンドウでロードと保存のボタンがあります。 CommandBindingを使用し、保存ボタンにはCanExecuteプロパティがあり、ユーザーがロード前にデータを保存しないようにします。CanExecute-Resultが変更された後、コントロールが更新されない
CanExecute-Methodeのが私の意図は、データがロードされた後、真canSaveXML =を設定することですが、値は変更をした後にコントロールが更新されない「canSaveXML」
private void Save_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
if (canSaveXML == false)
{
e.CanExecute = false;
}
else
{
e.CanExecute = true;
}
e.Handled = true;
}
と呼ばれる簡単なブール値に接続されています。私はいくつかの読書をして、私はCommandManager.InvalidateRequerySuggestedを呼び出さなければならないことを知った。私は今それを行い、私のコードはこのように見えます。
canSaveXML = true;
CommandManager.InvalidateRequerySuggested();
ただし、コントロール(ボタン)はまだ更新されません。 UI上で何かをトリガーするか、ウィンドウを最小化/最大化するまで、私はまだ無効です。私がした後、ボタンが有効になります。
ここで何が間違っていますか?
MSDNのサンプルでは、CommandManager.InvalidateRequerySuggestedがdispatchertimerを使用して何度も呼び出されていますが、これが唯一の解決策であるとは考えられません。
ありがとうございました。 –
ありがとうございました。私はRunWorkerCompletedイベントハンドラにCommandManager.InvalidateRequerySuggested()メソッドを追加し、魅力的なように働いていました! – OptimizePrime