在WPF上设置了MenuItem样式

时间:2013-01-22 17:48:35

标签: wpf wpf-controls

我正在开发WPF菜单。我现在有这个菜单:

enter image description here

当菜单悬停时,它看起来像Users menuItem。这是背后的代码:

 <Menu Grid.Column="0" Name="menuNavigation" >
            <MenuItem Header="Users" >
                <MenuItem Header="Register user">
                    <MenuItem ToolTip="Register new user on database." />
                </MenuItem>
                <MenuItem Header="Admin users">
                    <MenuItem ToolTip="Update or delete a user." />
                </MenuItem>
            </MenuItem>
            <MenuItem Header="Identify">
                <MenuItem ToolTip="Start an identification." />
            </MenuItem>
            <MenuItem Header="Authenticate">
                <MenuItem ToolTip="Start an authentication." />
            </MenuItem>
            <MenuItem Header="Cameras">
                <MenuItem ToolTip="Manage connected cameras." />
            </MenuItem>
        </Menu>

我希望浅蓝色边框消失,我试图模拟特殊效果。当我将它悬停时,我想要一个围绕这个词的白色括号,就像强调它一样。

有人能告诉我如何开始这个吗?

修改 我可以访问IsMouseOver事件,但它似乎无视我。我现在有这样的造型:

    <!-- Menu navigation properties -->
<Style TargetType="Menu">
    <Setter Property="Background" Value="{DynamicResource TopMenuGradient}" />
    <Setter Property="HorizontalAlignment" Value="Right" />
    <Setter Property="Foreground" Value="White" />
    <Setter Property="FontFamily" Value="Calibri" />
    <Setter Property="FontSize" Value="18" />
    <Setter Property="FontWeight" Value="Bold" />
    <Setter Property="Height" Value="50" />
</Style>
<!-- MenuItem Style -->
<Style TargetType="MenuItem">
    <Setter Property="BorderThickness" Value="0" />
    <Setter Property="Height" Value="50" />
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True" >
            <Setter Property="Foreground" Value="LightGray" />
            <Setter Property="Background" Value="White" />
        </Trigger>
    </Style.Triggers>
</Style>

我可以删除淡蓝色边框,但我想更改Background属性,但MenuItem样式似乎忽略了我...部分。我的意思是:Foreground有效......但不是Background!怎么了?

1 个答案:

答案 0 :(得分:2)

这是有用的link来自codeproject。关于悬停,WPF网格控件支持MouseEnter和MouseLeave事件。您应该能够为两者连接事件处理程序。

另请参阅this