WPF-在不使用模板的情况下触发IsMouseOver时,可以更改MenuItem的背景颜色吗?

问题描述 投票:0回答:1

enter image description here

我想在不使用Template的情况下触发IsMouseOver时更改MenuItem的背景颜色。

会发生吗?

或者当IsMouseOver触发时,它应该使用Template更改MenuItem的背景颜色。

编辑:

我尝试按照dhilmathy的建议添加ControlTemplate,现在可以在IsMouseOver触发时更改标题的背景,但是如何更改MenuItem的背景? MenuItems现在消失了。

enter image description here

以下XAML为:

<Menu Grid.Column="0" Background="#000d18" BorderBrush="#000d18" Cursor="Hand" Margin="28,0,0,0">
                <MenuItem Header="Test1" Width="72" Height="42" Foreground="#d8d8d8" FontSize="16">
                    <MenuItem Header="Content1" Style="{StaticResource MenuItemStyle}"/>
                    <MenuItem Header="Content2" Style="{StaticResource MenuItemStyle}"/>
                    <MenuItem Header="Content3" Style="{StaticResource MenuItemStyle}"/>
                    <MenuItem Header="Content4" Style="{StaticResource MenuItemStyle}"/>
                    <MenuItem Header="Content5" Style="{StaticResource MenuItemStyle}"/>
                    <MenuItem Header="Content6" Style="{StaticResource MenuItemStyle}"/>
                </MenuItem>
                <MenuItem Header="Test2" Width="72" Height="42" Foreground="#d8d8d8" FontSize="16">
                    <MenuItem.Style>
                        <Style TargetType="MenuItem">
                            <Style.Setters>
                                <Setter Property="Template">
                                    <Setter.Value>
                                        <ControlTemplate TargetType="{x:Type MenuItem}">
                                            <Border Width="72" Height="42" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}">
                                                <ContentPresenter x:Name="ContentPresenter" Content="{TemplateBinding Header}" ContentSource="Header" Margin="{TemplateBinding Padding}" VerticalAlignment="Center"/>
                                            </Border>
                                            <ControlTemplate.Triggers>
                                                <Trigger Property="IsMouseOver" Value="True">
                                                    <Setter Property="Background" Value="#1271C8"/>
                                                </Trigger>
                                            </ControlTemplate.Triggers>
                                        </ControlTemplate>
                                    </Setter.Value>
                                </Setter>
                            </Style.Setters>
                        </Style>
                    </MenuItem.Style>
                    <MenuItem Header="Content1" Style="{StaticResource MenuItemStyle}"/>
                    <MenuItem Header="Content2" Style="{StaticResource MenuItemStyle}"/>
                    <MenuItem Header="Content3" Style="{StaticResource MenuItemStyle}"/>
                </MenuItem>
                <MenuItem Header="Test3" Width="72" Height="42" Foreground="#d8d8d8" FontSize="16"></MenuItem>
            </Menu>
wpf background styles menuitem ismouseover
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.