5

MenuItemをプログラムで表示/非表示にする必要がありますが、これを行うための最良の方法は何ですか?

4

2 に答える 2

5

MenuItemを追加するには、次の行に沿って何かが必要になります。

var menuItem = new MenuItem() { Header = "Menu Name", Name = "Identifier", IsCheckable = true, IsChecked = visible };
menuItem.Click += new RoutedEventHandler(contextMenu_onClick);
int position = contextMenu.Items.Add(menuItem);

(しかし、あなたはおそらくすでにこれを持っています)。

メニュー項目をプロパティに結び付ける方法が必要になりますが、アプリケーションが表示されない限り、最善の方法を提案することはできません。オブジェクトを格納するTagプロパティがあります。文字列を格納するUidプロパティ。文字列も格納するNameプロパティ。

その間:

menuItem.Visibility = Visibility.Visible;

menuItem.Visibility = Visibility.Collapsed;

アイテムの表示を切り替える必要があります。

編集:折りたたみを使用すると、メニュー項目が非表示になり、メニューのスペースが予約されなくなります。コンテキストメニューに空白スペースは必要ありません。(これについてはBotz3000に感謝します)

次に、プロパティ値が変更されたコードで、上記のリンケージを使用して表示/非表示にするメニュー項目を見つけます。アイテムを入手したら、その値を切り替えることができます。

menuItem.Visibility = menuItem.Visibility == Visibility.Visible ? Visibility.Collapsed : Visibility.Visible;
于 2009-05-09T10:21:58.327 に答える
0

を非表示にしてもMenuItemよろしいですか? WPF のコマンド フレームワークを使用して無効にする方が一般的です。

<MenuItem Header="_MenuName" Command="{x:Static local:MyCommands.SomeCommand}" />

...

<!-- In the menu item or any of its ancestors: -->
<SomeControl.CommandBindings>
    <CommandBinding Command="{x:Static local:MyCommands.SomeCommand}" Executed="Save_Executed" CanExecute="Save_CanExecture" />
</SomeControl.CommandBindings>

WPF は のbool結果を使用して のコマンドを現在実行できるSave_CanExecuteかどうかを判断し、それに応じMenuItemて を有効/無効にしMenuItemます。

于 2011-07-29T19:06:02.877 に答える