Frage

Ich muss programmatisch ein- / auszublenden ein MenuItem, was der beste Weg wäre, dies zu tun?

War es hilfreich?

Lösung

Nun, fügen Sie ein MenuItem Sie etwas in dieser Richtung müssen:

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);

(aber Sie haben es wahrscheinlich schon vor).

Sie werden einen Weg benötigen Sie den Menüpunkt auf die Eigenschaft zu binden - aber ohne die Anwendung zu sehen, kann ich nicht wirklich die beste Art und Weise vor. Es gibt die Tag-Eigenschaft, die ein Objekt speichert; die Uid Eigenschaft, die eine Zeichenfolge speichert; die Name-Eigenschaft, die auch eine Zeichenfolge speichert.

Während:

menuItem.Visibility = Visibility.Visible;

und

menuItem.Visibility = Visibility.Collapsed;

sollte die Sichtbarkeit des Elements wechseln.

EDIT: Komprimiert verwendet, wird den Menüpunkt und nicht den Reserveraum im Menü verstecken - Sie wollen nicht wirklich Leerzeichen in einem Kontextmenü. (dank Botz3000 für diese)

Dann in Ihrem Code, wo der Wert der Eigenschaft geändert wird Hier finden Sie den Menüpunkt Sie möchten zu finden, um die Verknüpfung zum Anzeigen / Verbergen mit I oben beschrieben. Sobald Sie das Einzelteil haben, können Sie schalten es Wert ist:

menuItem.Visibility = menuItem.Visibility == Visibility.Visible ? Visibility.Collapsed : Visibility.Visible;

Andere Tipps

Sind Sie sicher, dass Sie die MenuItem verstecken wollen? Es ist häufiger zu deaktivieren, mit WPF kommandier Rahmen:

<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 das bool Ergebnis Save_CanExecute verwenden, ob der Befehl des MenuItem bestimmen kann zur Zeit ausführen, und aktivieren / deaktivieren MenuItem entsprechend.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top