我创建了一个带有一些选中菜单项的小菜单栏。它在Windows 10中显示为黑屏但在Windows 7中显示正常
XAML
<Window x:Class="CheckMenuTickinWin10.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:CheckMenuTickinWin10"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<StackPanel>
<ToolBar>
<Menu>
<MenuItem Header="menu">
<MenuItem Header="Sub" IsCheckable="True" IsChecked="True"/>
<MenuItem Header="Sub" IsCheckable="True" IsChecked="False"/>
<MenuItem Header="Sub" IsCheckable="True" IsChecked="True"/>
</MenuItem>
</Menu>
</ToolBar>
</StackPanel>
</Window>
在Windows 10中,我应该怎么做才能显示复选标记?
答案 0 :(得分:2)
此背景在菜单项的默认ControlTemplate中定义。模板定义控件的外观,如果没有为控件定义模板,它将选择默认模板。
好消息是您可以随意编辑ControlTemplate
以根据需要自定义控件。不太好的消息是,您必须熟悉一堆XAML代码(单个模板需要数百行)。
首先在Visual Studio中找到MenuItem的“默认”ControlTemplate。
在VS设计器中,右键单击SubMenuItem,然后选择“编辑模板” - &gt;从下拉菜单中“编辑副本”。这将自动将SubMenuItem的默认模板复制到窗口的资源字典中定义的样式名称“MenuItemStyle1”。
从模板中删除黑色背景。
展开MenuItemStyle1
,找到定义黑色边框的以下行。
<Border x:Name="GlyphPanel" BorderBrush="#80DADADA" BorderThickness="1" Background="#FF212121" Height="20" Margin="0,1" Visibility="Hidden" Width="20">
将背景颜色从“#FF212121”更改为“#FFEEF5FD”,然后保存更改。 (#FFEEF5FD是边框的高亮颜色,它也是菜单浅色背景的颜色,你可以在默认模板中找到这种颜色。)
然后将此新模板应用于所有3个菜单项。
<MenuItem Header="menu">
<MenuItem Header="Sub" IsCheckable="True" IsChecked="True" Style="{DynamicResource MenuItemStyle1}" />
<MenuItem Header="Sub" IsCheckable="True" IsChecked="False" Style="{DynamicResource MenuItemStyle1}" />
<MenuItem Header="Sub" IsCheckable="True" IsChecked="True" Style="{DynamicResource MenuItemStyle1}" />
</MenuItem>