菜单项背景不更改IsSubMenu属性被触发时

时间:2015-03-28 20:05:41

标签: c# wpf

我正在尝试更改其子菜单打开的选项菜单项的背景颜色。如果我在IsSubMenuOpen属性为true时更改宽度或前景颜色它可以正常工作,但背景颜色不会改变。谁能告诉我原因?

这是我的代码:

 <UserControl x:Class="RoboHealthApplication.UserControls.LeftMenu"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 mc:Ignorable="d" 
                 d:DesignHeight="300" d:DesignWidth="320"


                 >
        <UserControl.Resources>
            <Style TargetType="MenuItem">
                <Setter Property="Background" Value="#E4ADB0"/>
                <Setter Property="MinWidth" Value="230px"/>
                <Setter Property="MinHeight" Value="50px"/>
                <Setter Property="FontSize" Value="20px"/>
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="true">
                        <Setter Property="Background" Value="#F0E0E0" />
                    </Trigger>
                    <Trigger Property="IsPressed" Value="true">
                        <Setter Property="Background" Value="#F0E0E0" />
                    </Trigger>
                    <Trigger Property="IsSubmenuOpen" Value="true">
                        <Setter Property="Background" Value="Orange" />

                        <Setter Property="MinWidth" Value="500px" />
                        <Setter Property="Foreground" Value="Orange" />
                    </Trigger>
                </Style.Triggers>
            </Style>
        </UserControl.Resources>
        <DockPanel LastChildFill="False" Margin="0 20 0 20">
            <DockPanel LastChildFill="False" MinWidth="70px" MinHeight="300px" Background="#9A1F24">

            </DockPanel>
            <DockPanel LastChildFill="False" MinWidth="240px" MinHeight="300px" Background="#C2272D">
                <Menu MinWidth="240px" 
            MinHeight="300px"
             Foreground="#9A1F24"
            VerticalAlignment="Top"
            HorizontalAlignment="Left"
            Background="#C2272D"
           >

                    <Menu.ItemsPanel>
                        <ItemsPanelTemplate>
                            <VirtualizingStackPanel Orientation="Vertical" />
                        </ItemsPanelTemplate>
                    </Menu.ItemsPanel>

                    <MenuItem Header="Bar Code">
                    </MenuItem>

                    <MenuItem Header="Appointments">
                    </MenuItem>
                    <MenuItem Header="Pharmacy">
                    </MenuItem>
                    <MenuItem Header="Staff">
                        <MenuItem Header="Option1"/>
                        <MenuItem Header="Option2"/>
                        <Separator/>
                        <MenuItem Header="Option3"/>
                        <MenuItem Header="Option4"/>
                    </MenuItem>
                    <MenuItem Header="Doctor">
                        <MenuItem Header="Option1"/>
                        <MenuItem Header="Option2"/>
                        <Separator/>
                        <MenuItem Header="Option3"/>
                        <MenuItem Header="Option4"/>
                    </MenuItem>
                    <MenuItem Header="Patients">
                        <MenuItem Header="Option1"/>
                        <MenuItem Header="Option2"/>
                        <Separator/>
                        <MenuItem Header="Option3"/>
                        <MenuItem Header="Option4"/>
                    </MenuItem>
                </Menu>
            </DockPanel>
        </DockPanel>
    </UserControl>

1 个答案:

答案 0 :(得分:2)

您需要覆盖菜单控制模板才能实现此目的。您可以参考此menucontroltemplate