wpf - programar - que es un evento de un control
No se puede adjuntar el controlador de eventos al Elemento de menĂº contextual en Estilo (1)
Intente agregar el ContextMenu
como recurso y la referencia como StaticResource
. No tengo XamDataGrid
instalado, así que no puedo probarlo, pero debe estar en las siguientes líneas.
<igDP:XamDataGrid.Resources>
<ContextMenu x:Key="contextMenu">
<ContextMenu.Items>
<MenuItem Header="Select All"
Command="SelectAll">
<MenuItem.Icon>
<Image Source="../icons/table_select_all.png"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Accept for column"
Click="MenuItem_Click"></MenuItem>
</ContextMenu.Items>
</ContextMenu>
<Style TargetType="{x:Type editors:XamNumericEditor}">
<Setter Property="ContextMenu" Value="{StaticResource contextMenu}"/>
</Style>
</igDP:XamDataGrid.Resources>
Alternativamente, puede usar un EventSetter
<MenuItem Header="Accept for column">
<MenuItem.Style>
<Style TargetType="MenuItem">
<EventSetter Event="Click" Handler="MenuItem_Click"/>
</Style>
</MenuItem.Style>
</MenuItem>
Actualizar
Para obtener PlacementTarget
necesitarás el ContextMenu
. Podría pasar esto como CommandParameter
<MenuItem Header="Accept for column"
CommandParameter="{Binding RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}}}"
Click="MenuItem_Click">
</MenuItem>
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
MenuItem menuItem = sender as MenuItem;
ContextMenu contextMenu = menuItem.CommandParameter as ContextMenu;
var placementTarget = contextMenu.PlacementTarget;
//...
}
Estoy tratando de modificar ContextMenu
predeterminado para XamNumericEditor
en la XamDataGrid
editable de XamDataGrid
.
Aquí está mi código XAML:
<igDP:XamDataGrid.Resources>
<Style TargetType="{x:Type editors:XamNumericEditor}">
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu>
<ContextMenu.Items>
<MenuItem Header="Select All"
Command="SelectAll">
<MenuItem.Icon>
<Image Source="../icons/table_select_all.png"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Accept for column"
Click="MenuItem_Click">
</MenuItem>
</ContextMenu.Items>
</ContextMenu>
</Setter.Value>
</Setter>
</Style>
</igDP:XamDataGrid.Resources>
El archivo de código detrás contiene el controlador de eventos para este elemento de menú:
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
//...
}
Pero cuando lo inicio, capté una excepción con el mensaje: No se puede convertir el objeto de tipo ''System.Windows.Controls.MenuItem'' para escribir ''System.Windows.Controls.ContextMenu''.
¿Puedes ayudarme con eso? Gracias.