2012-01-09 47 views
3

我想更改mouseOver上MenuItem的颜色。我还需要圆角边框,图像和文本框。当我设置样式一切正常时,只有mouseOverEvent做任何事情,背景不会改变。我的代码是:更改MouseOver上MenuItem的颜色

<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>  

希望有人知道我失踪了。谢谢!

回答

4

您正在覆盖模板,但不使用背景颜色中的任何位置,因此该值不会被应用。

设置背景颜色在你的菜单项模板

<ControlTemplate TargetType="{x:Type MenuItem}"> 
    <Grid Background="{TemplateBinding Background}"> 
+0

谢谢!现在,它的工作原理...只有MenuItem是矩形的,它只显示我圆形的边框。我想只看到圆形的边框被着色。你能帮助我吗? – user599977 2012-01-09 15:37:00

+0

@ user599977设置您的'Border'对象的背景而不是'Grid' – Rachel 2012-01-09 15:44:15

+0

谢谢!它工作正常! – user599977 2012-01-09 15:47:54

0

你没有约束力的Background随时随地在你的模板,从而改变这种属性没有任何效果。