1. ホーム
  2. .net

[解決済み] WPF - CommandBindingsを使用してCanExecuteの再評価を強制する方法

2022-06-26 08:23:26

質問

私は Menu があり、それぞれの MenuItem は、階層内の Command プロパティに RoutedCommand と定義しました。 関連する CommandBinding の評価に対するコールバックを提供します。 CanExecute を評価するコールバックを提供し、各 MenuItem .

これは はほとんど が動作します。 メニュー項目は最初、正しい有効および無効の状態で表示されます。 しかし、私の CanExecute コールバックが使用するデータが変更されると、この新しい状態を UI に反映させるために、コマンドでコールバックから結果を再要求する必要があります。

にはパブリックメソッドはないようです。 RoutedCommand または CommandBinding を使用します。

コントロールにクリックまたは入力すると、コールバックが再び使用されることに注意してください(マウスオーバーでは更新されないので、入力時にトリガーされるのだと思います)。

どのように解決するのですか?

本で一番きれいな方法ではないですが、CommandManagerを使用してすべてのコマンドバインディングを無効にすることができます。

CommandManager.InvalidateRequerySuggested();

より詳しい情報は MSDN