【发布时间】:2021-05-31 03:54:43
【问题描述】:
如下图所示,我在后续XAML中使用的style成功地将菜单项的默认背景色和前景色分别更改为蓝色和白色。但是在鼠标悬停时,它不会将MenuItem 的background color 更改为浅蓝色(而是保持鼠标悬停的默认颜色)。我可能在这里遗漏了什么,我们该如何解决这个问题?我尝试了this 和this 帖子的解决方案,但仍然没有运气。
菜单快照
<Menu>
<MenuItem Header="_File" Background="{DynamicResource MahApps.Brushes.Accent}" Width="32" Height="30">
<MenuItem.Resources>
<Style BasedOn="{StaticResource MahApps.Styles.MenuItem}" TargetType="MenuItem">
<Setter Property="Background" Value="{StaticResource MahApps.Brushes.Accent}"/>
<Setter Property="Foreground" Value="{StaticResource MahApps.Brushes.IdealForeground}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type MenuItem}">
<Grid Background="{TemplateBinding Background}">
<MenuItem Header="{TemplateBinding Header}" />
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{StaticResource MahApps.Brushes.Badged.Background}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</MenuItem.Resources>
<MenuItem Header="_New" />
<MenuItem Header="_Open" />
<MenuItem Header="_Save" />
<Separator />
<MenuItem Header="_Exit" />
</MenuItem>
</Menu>
更新
我已经上传了这个非常基本的 WPF 示例项目here - 以防有人想测试他/她的建议。此文件上传链接将在 30 天后过期。
【问题讨论】:
标签: wpf menuitem mahapps.metro