2009-05-08 22 views

Antwort

5

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 wahrscheinlich schon diese bekam).

Sie werden eine Möglichkeit brauchen, den Menüpunkt an die Immobilie zu binden - aber ohne Ihre Bewerbung zu sehen, kann ich Ihnen nicht den besten Weg empfehlen. Es gibt die Eigenschaft Tag, die ein Objekt speichert. die Uid-Eigenschaft, die eine Zeichenfolge speichert; die Eigenschaft Name, die auch eine Zeichenfolge speichert.

While:

menuItem.Visibility = Visibility.Visible; 

und

menuItem.Visibility = Visibility.Collapsed; 

sollte die Sichtbarkeit des Elements wechseln.

BEARBEITEN: Mit Collapsed wird der Menüeintrag ausgeblendet und nicht Platz im Menü reserviert - Sie wollen nicht wirklich Leerzeichen in einem Kontextmenü. (Danke an Botz3000 dafür)

Dann in Ihrem Code, wo der Wert der Eigenschaft geändert wird, finden Sie den Menüpunkt, den Sie mit der oben beschriebenen Verknüpfung anzeigen/ausblenden möchten. Sobald Sie das Einzelteil haben, können Sie schalten es Wert ist:

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

würde nicht Sichtbarkeit. Kollabiert besser sein? – Botz3000

+1

Danke - Ich habe die Antwort aktualisiert – ChrisF

0

Sind Sie sicher, dass Sie die MenuItem verbergen? 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 verwendet das bool Ergebnis Save_CanExecute, um zu bestimmen, ob die MenuItem ‚s-Befehl kann zur Zeit ausführen, und aktivieren/deaktivieren Sie die MenuItem entsprechend.