2012-01-09 4 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

템플릿을 덮어 쓰지 만 그 안에 아무 곳이나 배경색을 사용하지 않으므로 값이 적용되지 않습니다.

당신은 그렇게 속성이 아무런 효과가 없음을 변경 템플릿에 어디서나 Background 바인딩되지 않습니다 당신의 MenuItem 템플릿

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

감사합니다. 이제는 작동합니다 ... MenuItem 만 사각형이며 둥근 테두리 만 표시합니다. 착색 될 둥근 테두리 만보고 싶습니다. 이걸로 나를 도울 수 있니? – user599977

+0

@ user599977'Grid '대신에'Border' 오브젝트의 배경 설정 – Rachel

+0

고마워요 !!! 괜찮아 !! – user599977

0

의 배경 색상을 설정합니다.