WPF MenuItem 未填充可用的 ContextMenu 空间

Flo*_*och 2 c# wpf user-interface mahapps.metro

我在使用 MahApps.Metro 的简单 ContextMenu 遇到了一个奇怪的问题,没有任何额外的样式。将光标移动到文本顶部或稍微围绕文本移动时,没有问题。但是当它移得更远时,仍然在 ContextMenu 边界内,Cursor 不再位于 MenuItem 之上。除了关闭 ContextMenu 之外,现在单击也不会导致任何操作。

在此处输入图片说明 在此处输入图片说明

<ContextMenu ItemsSource="{Binding ContextItems}">
    <ContextMenu.ItemTemplate>
        <DataTemplate>
            <MenuItem Header="{Binding Text}" Command="{Binding Command}"/>
        </DataTemplate>
    </ContextMenu.ItemTemplate>
</ContextMenu>
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?为什么 MenuItem 不使用可用空间?

pun*_*r76 5

如果您ContextItems拥有一个带有视图模型的集合,那么我认为这可以帮助您(未测试):

<ContextMenu ItemsSource="{Binding ContextItems}">
    <ContextMenu.ItemContainerStyle>
        <Style TargetType="MenuItem">
            <Setter Property="Header" Value="{Binding Text}" />
            <Setter Property="Command" Value="{Binding Command}" />
        </Style>
    </ContextMenu.ItemContainerStyle>
</ContextMenu>
Run Code Online (Sandbox Code Playgroud)

Command 和 Text 应该是 viewmodel 对象上的属性。