为什么只有部分上下文菜单触发 WPF 中的关联命令?

Why does only part of the context menu trigger the associated command in WPF?

我需要将上下文菜单项绑定到视图模型中的列表。它有效并且代码相当简单,但有一个问题是我的用户不会接受的。您必须单击上下文菜单的特定区域才能触发命令。

如果您在深蓝色区域之外单击,则不会触发该命令。

XAML如下:

<ContextMenu ItemsSource="{Binding MyContextMenuItems}">
    <ContextMenu.ItemTemplate>
        <DataTemplate>
            <MenuItem Header="{Binding Header}" Command="{Binding Command}" />
        </DataTemplate>
    </ContextMenu.ItemTemplate>                            
</ContextMenu>

看来深蓝色是实际的MenuItem控件,但我需要父级是可点击区域,我也希望它全部突出显示相同,但​​我认为那不会很一旦我知道了主要问题的解决方案就很难弄清楚。

感谢 DRapp 的评论,我找到了解决问题的方法。菜单项实际上是自动创建的,我在为我创建的菜单项内创建了一个菜单项。解决方案是定义 ContextMenu.ItemContainerStyle 而不是使用 ContextMenu.ItemTemplate。下面是最终的 XMAL。

<ContextMenu ItemsSource="{Binding MyContextMenuItems}">
    <ContextMenu.ItemContainerStyle>
        <Style TargetType="{x:Type MenuItem}">
            <Setter Property="Header" Value="{Binding Header}" />
            <Setter Property="Command" Value="{Binding Command}" />
        </Style>
    </ContextMenu.ItemContainerStyle>
</ContextMenu>