1

WPF アプリを作成していて、コンテキスト メニュー付きのシステム トレイ アイコンがあります。メニュー項目には WPF コマンドを使用したいのですが、それらを割り当てると、(同じ) コマンドが他の場所で有効になっているにもかかわらず、常にグレー表示されます。

MenuItem menuItem = new MenuItem();
menuItem.Header = "Exit";
menuItem.Command = CustomCommands.ExitApplication;
Systray.AddMenuItem(menuItem);

クリック イベントを割り当てると正常に動作し、CanExecute を常に true に設定するコマンドの CanExecute メソッドを作成しようとしましたが、それも役に立ちません。メニュー項目が無効になっている理由を知っている人はいますか?


更新: 提案どおり、コンテキスト メニューにコマンド バインドを追加しました。これには、メニューをクリックした後にのみ機能するという効果がありました。つまり、最初はメニュー項目がグレー表示されていますが、メニューのどこかをクリックするとオプションが有効になります。

この問題を解決するために、メニュー項目をコンテキスト メニューに追加した後、次のように呼び出しました。

CommandManager.InvalidateRequerySuggested();
4

3 に答える 3

3

コマンドが処理されるように、Menu または systray に CommandBinding を追加する必要があると思います。もしそうなら、デフォルトで有効になると思いますが。

于 2008-12-19T17:23:45.130 に答える
2

ええ、私はこれが起こるのを見てきました。場合によっては、CanExecute メソッドを再実行するように WPF CommandManager システムに指示する必要があります。ContextMenu がロードされたら、これを呼び出してみてください。CommandManager.InvalidateQuerySuggested();

于 2008-12-19T22:36:09.087 に答える