Windows 10中的WPF菜单项复选标记为黑色

时间:2017-07-05 06:20:53

标签: c# wpf

我创建了一个带有一些选中菜单项的小菜单栏。它在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>

enter image description here

在Windows 10中,我应该怎么做才能显示复选标记?

1 个答案:

答案 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>

menu to edit template