que tienen un control de usuario como esto:Cómo usar un ContextMenu UserControl en WPF?
<UserControl x:Class="MyApp.UserControls.MyContextMenu"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
ContextMenuOpening="OnContextMenuOpening"
d:DesignHeight="300" d:DesignWidth="300">
<UserControl.ContextMenu>
<ContextMenu>
...
</ContextMenu>
</UserControl.ContextMenu>
</UserControl>
Mi pregunta es: ¿cómo se utiliza ese menú contextual para algo así como una cuadrícula de datos:
<DataGrid ContextMenu="{usercontrols:MyContextMenu}"
Desafortunadamente eso no funciona debido a que el especificado el valor es incorrecto y esperaba un ContextMenu
.
Nota: Necesito reutilizar mi menú contextual en varios lugares, así que lo he puesto en su propio archivo. Además, tengo que ser capaz de escuchar a OnContextMenuOpening
eventos, porque el menú después de la apertura tiene que hacer un trabajo sobre el menú y el evento no es despedido por el menú contextual tristemente: http://connect.microsoft.com/VisualStudio/feedback/details/353112/contextmenu-opening-event-doesnt-fire-properly
"sí ContextMenu es una Clase derivada de FrameworkElement, pero este evento no se generará desde el menú contextual que se abre como fuente . El evento se genera desde el elemento que "posee" el menú de contexto como una propiedad y solo se genera cuando un usuario intenta abra un menú contextual en la interfaz de usuario. "
Este problema de evento es la razón por la que he puesto el menú para un control de usuario, para que el control de usuario pueda obtener el evento y hacer el trabajo.
Actualización: traté de tener como un elemento raíz y ampliar el menú contextual:
Y de código subyacente:
Pero estoy obteniendo: ContextMenu cannot have a logical or visual parent
.
Estoy abierto a sugerencias. Sin embargo, el suyo no funcionará, porque "ContextMenu no puede tener un elemento primario lógico o visual". No puede definir 'ContextMenu' como el elemento raíz. – Tower
¿Como qué elemento raíz? Me acabo de derivar de eso y funciona. – Clemens
No funciona para mí. Se queja de que 'ContextMenu' no puede tener un elemento primario lógico o visual. Es decir., significa que los menús contextuales solo se pueden usar para los valores de propiedad ContextMenu del elemento UI, no como elementos. Esto también tiene otro problema: no puedo escuchar los eventos 'OnContextMenuOpening'. – Tower