简体   繁体   English

如何在MouseOver上删除/更改MenuItem / ContextMenu的淡淡颜色?

[英]How do I remove/change hilghlighted color of MenuItem/ContextMenu on MouseOver?

How do I remove/change hilghlighted color of MenuItem/ContextMenu on MouseOver? 如何在MouseOver上删除/更改MenuItem / ContextMenu的淡淡颜色? I tried to edit ContextMenu Template and set style for MenuItem on MouseOver, but the default HiglightedColor is stil there on MouseOver. 我试图编辑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>

You have to override MenuItem default template and set trigger on IsHighlighted property: 您必须覆盖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>

To remove the background when the item is hovered just set the background color to Transparent . 要在悬停项目时删除背景,只需将背景颜色设置为Transparent

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM