我为菜单的顶级项目定义了一个控件模板,如下所示:
<ControlTemplate x:Key="{x:Static MenuItem.TopLevelItemTemplateKey}" TargetType="MenuItem">
<Border x:Name="Border">
<Grid x:Name="Grid" >
<ContentPresenter
ContentSource="Header"
RecognizesAccessKey="False"
Margin="10,5,50,5"
TextBlock.FontFamily="Segoe UI"
TextBlock.FontSize="14"
TextBlock.Foreground="White"/>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsHighlighted" Value="true">
<Setter TargetName="Border" Property="Background" Value="{StaticResource ControlMouseOver}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
这给了我想要的风格,但只有当我将鼠标悬停在菜单文本上时触发才会触发。理想情况下,当我将鼠标悬停在其父网格元素上时,我希望项目突出显示。尝试将触发器更改为此
<ControlTemplate.Triggers>
<Trigger Property="Grid.IsMouseOver" Value="true">
<Setter TargetName="Border" Property="Background" Value="{StaticResource ControlMouseOver}"/>
</Trigger>
</ControlTemplate.Triggers>
但不起作用。关于我哪里出错的任何建议?
答案 0 :(得分:2)
要使整个Border
(或Grid
)点击测试可见,您需要使用Background
初始化Brush
属性。您可以将其设置为Transparent
,例如
<ControlTemplate x:Key="{x:Static MenuItem.TopLevelItemTemplateKey}" TargetType="MenuItem">
<Border x:Name="Border" Background="Transparent" >
<!-- -->
</Border>
<!-- -->
</ControlTemplate>