为什么只有部分上下文菜单触发 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>
我需要将上下文菜单项绑定到视图模型中的列表。它有效并且代码相当简单,但有一个问题是我的用户不会接受的。您必须单击上下文菜单的特定区域才能触发命令。
如果您在深蓝色区域之外单击,则不会触发该命令。
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>