WPF Menu 控件的选中样式可以通过修改其样式模板来实现。以下是一个示例,可以在菜单项被选中时,改变其背景色和前景色:

<Window.Resources>
    <Style x:Key="MenuItemStyle" TargetType="{x:Type MenuItem}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type MenuItem}">
                    <Border x:Name="Border" Background="Transparent">
                        <ContentPresenter />
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsHighlighted" Value="True">
                            <Setter TargetName="Border" Property="Background" Value="{StaticResource {x:Static SystemColors.HighlightBrushKey}}" />
                            <Setter TargetName="Border" Property="Foreground" Value="{StaticResource {x:Static SystemColors.HighlightTextBrushKey}}" />
                        </Trigger>
                        <Trigger Property="IsHighlighted" Value="False">
                            <Setter TargetName="Border" Property="Background" Value="Transparent" />
                            <Setter TargetName="Border" Property="Foreground" Value="{StaticResource {x:Static SystemColors.ControlTextBrushKey}}" />
                        </Trigger>
                        <Trigger Property="IsEnabled" Value="False">
                            <Setter Property="Foreground" Value="{StaticResource {x:Static SystemColors.GrayTextBrushKey}}" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>

<Menu>
    <MenuItem Header="File" Style="{StaticResource MenuItemStyle}">
        <MenuItem Header="Open" />
        <MenuItem Header="Save" />
        <MenuItem Header="Exit" />
    </MenuItem>
    <MenuItem Header="Edit" Style="{StaticResource MenuItemStyle}">
        <MenuItem Header="Cut" />
        <MenuItem Header="Copy" />
        <MenuItem Header="Paste" />
    </MenuItem>
</Menu>

在上述示例中,使用了一个名为 MenuItemStyle 的样式,它的 TargetType 属性设为 MenuItem,表示这个样式适用于所有的菜单项。在样式模板中,使用了一个名为 Border 的 Border 控件作为菜单项的容器,通过修改它的 Background 和 Foreground 属性,来改变菜单项的选中样式。在 ControlTemplate.Triggers 中使用了 IsHighlighted 和 IsEnabled 属性的值作为条件,来确定菜单项当前的状态,并进行相应的样式设置。最后,在菜单项上应用 MenuItemStyle 样式即可。

wpf Menu 设置选中样式

原文地址: https://www.cveoy.top/t/topic/btpF 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录