2009-05-08 13 views

risposta

5

Beh, per aggiungere un Menultem avrete bisogno di qualcosa in queste righe:

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

(ma probabilmente avete già ottenuto questo).

Avrete bisogno di un modo per legare la voce di menu alla proprietà - ma senza vedere la vostra applicazione non posso davvero suggerire il modo migliore. C'è la proprietà Tag che memorizza un oggetto; la proprietà Uid che memorizza una stringa; la proprietà Name che memorizza anche una stringa.

Mentre:

menuItem.Visibility = Visibility.Visible; 

e

menuItem.Visibility = Visibility.Collapsed; 

dovrebbe commutare la visibilità della voce.

MODIFICA: L'utilizzo di Collapsed nasconderà la voce di menu e non riserva lo spazio nel menu: non si desidera realmente spazi vuoti in un menu di scelta rapida. (grazie a Botz3000 per questo)

Quindi nel codice in cui viene modificato il valore della proprietà, è possibile trovare la voce di menu che si desidera mostrare/nascondere utilizzando il collegamento descritto sopra. Una volta che hai la voce che si può passare il suo valore:

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

non sarebbe Visibility.Collapsed essere migliore? – Botz3000

+1

Grazie - Ho aggiornato la risposta – ChrisF

0

Sei sicuro che si desidera nascondere il MenuItem? È più comune per disattivarlo, utilizzando framework comandante di 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 utilizzerà il bool risultato di Save_CanExecute per determinare se il comando s' il MenuItem attualmente può eseguire, e abilitare/disabilitare il MenuItem conseguenza.

Problemi correlati