Necesito mostrar/ocultar un MenuItem programáticamente, ¿cuál sería la mejor manera de hacerlo?WPF hide MenuItem en ContextMenu basado en la propiedad del objeto
Respuesta
Bueno, para añadir un MenuItem que necesita algo en este sentido:
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);
(pero de lo que has conseguido ya esto).
Necesitarás alguna forma de vincular la opción de menú a la propiedad, pero sin ver tu aplicación realmente no puedo sugerir la mejor manera. Está la propiedad Tag que almacena un objeto; la propiedad Uid que almacena una cadena; la propiedad Name que también almacena una cadena.
bien:
menuItem.Visibility = Visibility.Visible;
y
menuItem.Visibility = Visibility.Collapsed;
debe cambiar la visibilidad del elemento.
EDIT: El uso de Colapsado ocultará la opción de menú y no reservará espacio en el menú; no desea realmente espacios en blanco en un menú contextual. (gracias a Botz3000 por esto)
Luego en su código donde se cambia el valor de la propiedad encontrará el elemento del menú que desea mostrar/ocultar utilizando el enlace que describí anteriormente. Una vez que tenga el elemento que puede cambiar su valor:
menuItem.Visibility = menuItem.Visibility == Visibility.Visible ? Visibility.Collapsed : Visibility.Visible;
¿Seguro que desea ocultar la MenuItem
? Es más común para desactivarlo, utilizando el framework mando de 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 utilizará el resultado de bool
Save_CanExecute
para determinar si el comando MenuItem
's puede ejecutar actualmente, y activar/desactivar el MenuItem
en consecuencia.
- 1. ContextMenu en WPF
- 2. Establecer una propiedad PlacementTarget de WPF ContextMenu en XAML?
- 3. Parámetros de mandato en ContextMenu en WPF
- 4. WPF MenuItem IsChecked La vinculación no funciona
- 5. Linq Distinto basado en la propiedad del objeto
- 6. WPF ListBoxItem y ContextMenu
- 7. Enlace de nombre de elemento de MenuItem en ContextMenu
- 8. Wpf- ¿Imposible lanzar MenuItem a Listbox?
- 9. WPF contextmenu y ListView
- 10. WPF 4.0 Enlace de datos al ContextMenu en el DataGrid
- 11. Wpf - Contextmenu en TabItem Header
- 12. Especificar comando para MenuItem en un DataTemplate
- 13. C#: Listbox Contextmenu para Listboxitems (WPF)
- 14. Estilo ContextMenu predeterminado - WPF
- 15. ContextMenu en colocador Estilo
- 16. Cómo usar un ContextMenu UserControl en WPF?
- 17. WPF MenuItem Encabezado y HeaderTemplate
- 18. WPF: Vinculando un ContextMenu a un comando MVVM
- 19. Pasar la propiedad del objeto en C++
- 20. Obtener la propiedad del objeto en JavaScript
- 21. WPF DataGrid: Enlace DataGridColumn visibilidad a ContextMenu MenuItems IsChecked (MVVM)
- 22. Estilo WPF basado en la corriente
- 23. Filtrado NSMutableArray basado en la propiedad enum
- 24. LINQ Contiene basado en la propiedad
- 25. ¿Cómo puedo vincular la propiedad IsEnabled de ContextMenu en Silverlight 4?
- 26. Disparador WPF basado en el tipo de objeto
- 27. WPF Sub-MenuItem Apertura a la izquierda en lugar de a la derecha
- 28. databind la propiedad Source del WebBrowser en WPF
- 29. Estilo óptico WPF de MenuItem-Separator creado dinámicamente en MVVM
- 30. Styling elementos anidados en WPF
¿No sería mejor Visibility.Collapsed? – Botz3000
Gracias - He actualizado la respuesta – ChrisF