Ответ 1
Попробуйте добавить ContextMenu
в качестве ресурса и ссылаться на него как StaticResource
У меня нет XamDataGrid
, поэтому я не могу попробовать, но он должен быть в следующих строках.
<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>
В качестве альтернативы вы можете использовать EventSetter
<MenuItem Header="Accept for column">
<MenuItem.Style>
<Style TargetType="MenuItem">
<EventSetter Event="Click" Handler="MenuItem_Click"/>
</Style>
</MenuItem.Style>
</MenuItem>
Обновление
Чтобы получить PlacementTarget
, вам понадобится ContextMenu
. Вы можете передать это как 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;
//...
}