我有这个非常简单的ControlTemplate:
<ControlTemplate TargetType="{x:Type ContextMenu}">
<Border
Name="Border"
Background="{StaticResource BlueBackground}"
BorderBrush="LightBlue"
CornerRadius="10"
BorderThickness="1" >
<StackPanel IsItemsHost="True"/>
</Border>
</ControlTemplate>
我创造了一个漂亮的下颚美丽圆角!但是,当我将鼠标指向上下文菜单时,MouseOver触发器会从某个地方触发,该界面在我漂亮的圆形边框顶部绘制一个非常难看的近似方形边框!
它来自哪里?
编辑: 最可能的原因是ContextMenu是一个包含MenuItems的ItemsControl,即使我的ContextMenu持有一个UserControl。因此,当IsMouseOver == true时,UserControl被视为MenuItem并突出显示!禁用此行为的最简单方法是什么?
答案 0 :(得分:0)
您可以将ContextMenu的ItemContainerStyle属性设置为MenuItems的自定义样式。
<ContextMenu.ItemContainerStyle>
<Style
TargetType="MenuItem">
<Setter
Property="Template">
<Setter.Value>
<ControlTemplate
TargetType="MenuItem">
<TextBlock
Text="{TemplateBinding Header}" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ContextMenu.ItemContainerStyle>
使用此策略,您必须为所需的任何鼠标效果制作自己的触发器,但Click and Checked事件仍会正常触发。