Ho bisogno di mostrare/nascondere un MenuItem in modo programmatico, quale sarebbe il modo migliore per farlo?WPF nascondi MenuItem su ContextMenu in base alla proprietà dell'oggetto
risposta
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;
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.
- 1. ContextMenu in WPF
- 2. WPF nascondi riga in datagrid in base alla condizione
- 3. ElementName Binding da MenuItem in ContextMenu
- 4. WPF ListBoxItem e ContextMenu
- 5. IsChecked Binding non funziona in MenuItem in un ContextMenu
- 6. WPF ContextMenu woes: Come imposto il DataContext del ContextMenu?
- 7. Default ContextMenu Style - WPF
- 8. WPF MenuItem IsChecked Binding not working
- 9. Passando origine del ContextMenu in Command WPF
- 10. WPF Menuitem Border
- 11. WPF: associare un ContextMenu a un comando MVVM
- 12. Rimuovi spazio icona su ContextMenu
- 13. ContextMenu in MVVM
- 14. Come utilizzare un ContextMenu UserControl in WPF?
- 15. WpfToolkit AutoCompleteBox ContextMenu non funziona
- 16. Come posso incorporare un elenco di dati limitato di MenuItem su un altro MenuItem in WPF?
- 17. WPF MenuItem Header and HeaderTemplate
- 18. Come si associa un comando a un MenuItem (WPF)?
- 19. ContextMenu in stile setter
- 20. Styling elementi annidati in WPF
- 21. Specifica comando per MenuItem in un DataTemplate
- 22. Nascondi cursore in WPF TextBox
- 23. WPF: MenuItem nidificati in una barra degli strumenti
- 24. ContextMenu WPF con ItemsSource - come associare a Command in ogni elemento?
- 25. Stile ottico WPF di MenuItem-Separator dinamicamente creato in MVVM
- 26. WPF Nascondi griglia Colonna
- 27. elementi Nascondi WPF in Visual Studio progettista
- 28. WPF Trigger binding alla proprietà MVVM
- 29. Visualizza dinamicamente un controllo in base alla proprietà associata usando WPF
- 30. fare clic su Disattiva destro e attivare tasto sinistro per contextmenu in WPF utilizzando MVVM
non sarebbe Visibility.Collapsed essere migliore? – Botz3000
Grazie - Ho aggiornato la risposta – ChrisF