C#WPF上下文菜单:菜单项对单击没有反应

C#WPF上下文菜单:菜单项对单击没有反应,c#,wpf,C#,Wpf,我有一个C#WPF应用程序。在XAML中,我有一个Datagrid,我在其中添加了一个ContextMenu,如下所示: <DataGrid.ContextMenu> <ContextMenu ItemsSource="{Binding Categories}"> <ContextMenu.ItemTemplate> <DataTemplate> <MenuItem Header="{Binding N

我有一个
C#
WPF应用程序
。在
XAML
中,我有一个
Datagrid
,我在其中添加了一个
ContextMenu
,如下所示:

<DataGrid.ContextMenu>
  <ContextMenu ItemsSource="{Binding Categories}">
    <ContextMenu.ItemTemplate>
      <DataTemplate>
        <MenuItem Header="{Binding Name}" Background="{Binding Brush}" Click="MenuItem_Click" Tag="{Binding Id}" />
      </DataTemplate>
    </ContextMenu.ItemTemplate>
  </ContextMenu>
</DataGrid.ContextMenu>

使用应用程序时,它看起来如下所示:

问题是,当单击框的颜色部分(我猜它是某些内部网格的一部分)时,会触发
MenuItem\u Click
事件。但是,当我单击
菜单项的灰色部分时,不会触发click事件。有人知道它为什么会这样吗?有没有办法解决这个问题


此外,如果能够给整个菜单项上色,而不仅仅是里面的小盒子,那就太好了。有办法吗?

您可以尝试减少
上下文菜单的
填充
,以及
菜单项的
边框厚度

<DataGrid.ContextMenu>
    <ContextMenu ItemsSource="{Binding Categories}" Padding="0">
        <ContextMenu.ItemTemplate>
            <DataTemplate>
                <MenuItem Header="{Binding Name}" Background="{Binding Brush}" Click="MenuItem_Click" Tag="{Binding Id}"
                          BorderThickness="0"/>
            </DataTemplate>
        </ContextMenu.ItemTemplate>
    </ContextMenu>
</DataGrid.ContextMenu>


灰色部分本身就是上下文菜单。您已经将Click事件处理程序绑定到菜单项,因此当您单击菜单项时,它会起作用。当您单击关联菜单时,它不能工作。您可以尝试删除菜单项之间的边距以删除灰色区域。
<DataGrid.ContextMenu>
    <ContextMenu ItemsSource="{Binding Categories}" Padding="0">
        <ContextMenu.ItemContainerStyle>
            <Style TargetType="MenuItem">
                <Setter Property="Header" Value="{Binding Name}" />
                <Setter Property="Tag" Value="{Binding Id}" />
                <Setter Property="Background" Value="{Binding Brush}" />
                <EventSetter Event="Click" Handler="MenuItem_Click" />
            </Style>
        </ContextMenu.ItemContainerStyle>
    </ContextMenu>
</DataGrid.ContextMenu>