如何删除/更改 MouseOver 上 MenuItem/ContextMenu 的突出显示颜色?

Mrg*_*Gek 0 c# wpf xaml contextmenu menuitem

如何删除/更改 MouseOver 上 MenuItem/ContextMenu 的突出显示颜色?我尝试编辑 ContextMenu 模板并为 MouseOver 上的 MenuItem 设置样式,但默认的 HiglightedColor 仍然存在于 MouseOver 上。

<Style TargetType="{x:Type ContextMenu}">
                    <Setter Property="SnapsToDevicePixels"
              Value="True" />
                    <Setter Property="OverridesDefaultStyle"
              Value="True" />
                    <Setter Property="Grid.IsSharedSizeScope"
              Value="true" />
                    <Setter Property="HasDropShadow"
              Value="True" />
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type ContextMenu}">
                                <Border x:Name="Border"
                    Background="Black"
                    BorderThickness="0">
                                    <Border.BorderBrush>
                                        <SolidColorBrush Color="Black" />
                                    </Border.BorderBrush>
                                    <StackPanel IsItemsHost="True"
                          KeyboardNavigation.DirectionalNavigation="Cycle" />
                                </Border>
                                <ControlTemplate.Triggers>
                                    <Trigger Property="HasDropShadow"
                       Value="true">
                                        <Setter TargetName="Border"
                        Property="Padding"
                        Value="0,0,0,0" />
                                        <Setter TargetName="Border"
                        Property="CornerRadius"
                        Value="0" />
                                    </Trigger>
                                    <Trigger Property="IsMouseOver"  Value="True">
                                        <Setter Property="BorderBrush" Value="Transparent"/>
                                        <Setter Property="Background"  Value="Transparent"/>
                                    </Trigger>
                                </ControlTemplate.Triggers>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>

<Style TargetType="{x:Type MenuItem}">
                    <Style.Triggers>
                        <Trigger Property="IsHighlighted" Value="True">
                            <Setter Property="Background" Value="Transparent"></Setter>
                        </Trigger>
                        </Trigger>
                        <Trigger Property="IsMouseOver" Value="true">
                            <Setter Property="Background" Value="Transparent">

                            </Setter>
                        </Trigger>
                    </Style.Triggers>
                </Style>
Run Code Online (Sandbox Code Playgroud)

Ale*_*lex 5

您必须覆盖MenuItem默认模板并在IsHighlighted属性上设置触发器:

<ContextMenu>
    <ContextMenu.Resources>
        <Style TargetType="{x:Type MenuItem}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type MenuItem}">
                        <Border Background="{TemplateBinding Background}">
                            <ContentPresenter Content="{TemplateBinding Header}" Margin="35 5 10 5" />
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsHighlighted" Value="True">
                                <Setter Property="Background"  Value="Green"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ContextMenu.Resources>
    <MenuItem Header="Element 1" />
    <MenuItem Header="Element 2" />
    <MenuItem Header="Element 3" />
</ContextMenu>
Run Code Online (Sandbox Code Playgroud)

要在项目悬停时删除背景,只需将背景颜色设置为Transparent