Изменить цвет MenuItem на MouseOver - PullRequest
3 голосов
/ 09 января 2012

Я хочу изменить цвет MenuItem при mouseOver.Мне также нужны скругленные границы, изображение и текстовое поле.Когда я устанавливаю стиль, все в порядке, только mouseOverEvent ничего не делает, фон не меняется.Мой код:

  <Style x:Key="BaseStyle" TargetType="MenuItem">
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="true">
                <Setter Property="Background" Value="#0a99f3" />
            </Trigger>
            <Trigger Property="IsKeyboardFocusWithin" Value="true">
                <Setter Property="Background" Value="#0a99f3" />
            </Trigger>
        </Style.Triggers>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type MenuItem}">
                    <Grid>
                        <Border Name="MainBorder" BorderThickness="2,2,2,0" CornerRadius="8,8,8,8" Margin="0,0,1,0"  BorderBrush="AliceBlue">

                            <Grid>
                                <TextBlock Text="Info" Margin="30,10,0,0" FontFamily="Arial" FontSize="14" FontWeight="Bold" />
                                <Image Width="15" Height="15" Source="menu.PNG" Margin="-100,0,0,0" />
                            </Grid>
                        </Border>

                    </Grid>
                </ControlTemplate>

            </Setter.Value>
        </Setter>

    </Style>    

Надеюсь, кто-нибудь знает, что мне не хватает.Спасибо!

Ответы [ 2 ]

4 голосов
/ 09 января 2012

Вы перезаписываете шаблон, но нигде не используете цвет фона, поэтому значение никогда не применяется.

Установите цвет фона в шаблоне MenuItem

<ControlTemplate TargetType="{x:Type MenuItem}">
    <Grid Background="{TemplateBinding Background}">
0 голосов
/ 09 января 2012

Вы не привязываете Background в любом месте вашего шаблона, поэтому изменение этого свойства не имеет никакого эффекта.

...