我正在WPF中做一些介绍性的工作(我的经验几乎完全是Web开发),而且我对RadContextMenu的样式问题感到有些困惑。
菜单的XAML非常简单:
<telerik:RadContextMenu.ContextMenu>
<telerik:RadContextMenu EventName="Click" ItemsSource="{Binding NewEntityMenuItems}" StaysOpen="False">
<telerik:RadContextMenu.ItemTemplate>
<DataTemplate>
<telerik:RadMenuItem Header="{Binding Text}" Command="{Binding MenuItemClickedCommand}" StaysOpenOnClick="False"></telerik:RadMenuItem>
</DataTemplate>
</telerik:RadContextMenu.ItemTemplate>
</telerik:RadContextMenu>
</telerik:RadContextMenu.ContextMenu>
运行时结果如下所示:
正如您所看到的,当悬停在项目上时,有两个突出显示的区域,一个在另一个区域内。如果单击菜单项的“外部区域”,则不会调用该命令,但菜单会消失。如果我单击“内部区域”(带有文本的区域),则调用命令,但菜单不消失。
为什么有不同的区域?我可以只占用一个占据菜单宽度的区域吗?点击后还会关闭菜单?
答案 0 :(得分:1)
使用ItemContainerStyle:
<n:RadContextMenu ItemsSource="{Binding ContextMenuItems}">
<n:RadContextMenu.ItemContainerStyle>
<Style TargetType="n:RadMenuItem">
<Setter Property="Header" Value="{Binding Name}" />
<Setter Property="Command" Value="{Binding Command}" />
<Setter Property="ItemsSource" Value="{Binding Items}" />
<Setter Property="IsSeparator" Value="{Binding IsSeparator}" />
</Style>
</n:RadContextMenu.ItemContainerStyle>
</n:RadContextMenu>