WPF菜单项在Windows 10中的勾选标记为黑色。

3
我创建了一个带有一些选中菜单项的小菜单栏。在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中,我应该怎么做才能让复选框的勾显示出来?

你读过这个吗?https://dev59.com/sXrZa4cB1Zd3GeqP1l55 - undefined
@SebastianSchulz 谢谢,已经完成并且现在正常工作。请将相同内容作为答案发布,我会接受。 - undefined
1个回答

4
这个背景是在菜单项的默认ControlTemplate中定义的。模板定义了控件的外观,如果您不为控件定义模板,则它将采用默认模板。
好消息是,您可以自由编辑ControlTemplate以按照您喜欢的方式自定义控件。不太好的消息是,您必须熟悉一堆XAML代码(对于单个模板而言可能有数百行)。 首先在Visual Studio中找到菜单项的“默认”ControlTemplate。 在VS设计器中,右键单击SubMenuItem,选择“Edit Template”->“Edit a Copy”从下拉菜单中。这将自动将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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接