1

我有一个包含三个项目的菜单,当鼠标悬停在任何项目上时,我正在尝试更改背景颜色。我已经尝试过 IsMouseOver 和 IsHighlighted 触发器属性,但都不起作用。

在我的 App.xaml 中:

<Style TargetType="MenuItem" x:Key="MenuItemStyle" >
        <Style.Triggers>
            <Trigger Property="MenuItem.IsHighlighted" Value="true">
                <Setter Property="Background" Value="Black"/>
            </Trigger>
        </Style.Triggers>          
    </Style>

在我的 Main.xaml 中:

<Menu HorizontalAlignment="Left" Height="30" VerticalAlignment="Top" Width="975
          " FontFamily="Tempus Sans ITC" FontSize="16"  >
        <Menu.Background>
            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                <GradientStop Color="#FFC8C8C8" Offset="0"/>
                <GradientStop Color="Black" Offset="1"/>
            </LinearGradientBrush>
        </Menu.Background>
        <Menu.Foreground>
            <SolidColorBrush Color="#FFFFFFFB"/>
        </Menu.Foreground>
        <MenuItem Header="New" Click="MenuNew_Click" VerticalAlignment="Center" Padding="15,4,8,3" Width="60">
            <MenuItem.ToolTip>
                <ToolTip>
                    Add new Park
                </ToolTip>
            </MenuItem.ToolTip>
        </MenuItem>
        <MenuItem Header="Search" Width="65" Padding="12,4,8,3"  >
            <MenuItem.ToolTip>
                <ToolTip> Select search option</ToolTip>
            </MenuItem.ToolTip>
            <MenuItem Header="Name" Background="Black" FontSize="14" Style="{StaticResource MenuItemStyle}" />
            <MenuItem Header="ID" Background="Black" FontSize="14"/>
            <MenuItem Header="OwnerName" Background="Black" FontSize="14"/>
        </MenuItem>          
    </Menu>    
4

1 回答 1

1

(由Show Me The Template提取)的默认值ControlTemplate不会在鼠标悬停时设置属性,而是直接在模板中设置元素。不幸的是,这意味着您不能只更改突出显示的颜色,而是必须重新创建整个. MSDN有一个如何执行此操作的示例(此示例来自 .NET 3.5,但应该适用于 4.0 或 4.5)。MenuItemMenuItem.BackgroundControlTemplate

您的代码中的另一个警告:由于您Background直接在MenuItems 上设置,因此您Style的 'sTrigger无论如何都不起作用。由于DependencyProperty值优先,您在项目上设置的本地值不能被 a 覆盖Style Trigger

于 2013-08-12T20:00:32.047 回答