我在使用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>
我做错了什么?为什么MenuItem不使用可用空间?
答案 0 :(得分:4)
如果你的ContextItems
拥有一个包含viewmodels的集合,那么我认为这可以帮助你(未经测试):
<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>
Command和Text应该是viewmodel对象的属性。
答案 1 :(得分:1)
我没有使用过MahApps.Metro。虽然您可以像这样覆盖模板
<ContextMenu.ItemTemplate>
<DataTemplate>
<MenuItem Header="{Binding Text}" Command="{Binding Command}"/>
<MenuItem.Template>
<ControlTemplate>
<ContentPresenter Content="{Binding Header,RelativeSource={RelativeSource TemplatedParent}}">
</ContentPresenter>
</ControlTemplate>
</MenuItem.Template>
</MenuItem>
</DataTemplate>
</ContextMenu.ItemTemplate>
我希望这会有所帮助。