wpf Menu 设置选中样式
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 样式即可。
原文地址: https://www.cveoy.top/t/topic/btpF 著作权归作者所有。请勿转载和采集!