2013-04-25 2 views
0

일부 텍스트 상자가 있고 그 위에 마우스를 놓았을 때 일부 속성을 변경하려고합니다. 이 경우 BorderBrush 및 BorderThickness를 변경하려고합니다. On Mouse Over는 ContentTemplate에서 트리거를 실행하지 않습니다.

IT는 Window.Resource 태그 안에 있어요, 내 XAML의 ControlTemplate입니다 :

<Style TargetType="{x:Type TextBox}"> 
     <Setter Property="SnapsToDevicePixels" Value="True"/> 
     <Setter Property="OverridesDefaultStyle" Value="True"/> 
     <Setter Property="AllowDrop" Value="true"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type TextBoxBase}"> 
        <Border 
         Name="Border" 
         Padding="4" 
         BorderBrush="#ccc" 
         BorderThickness="1"> 
         <ScrollViewer Margin="0" x:Name="PART_ContentHost"/> 
         <Border.Background> 
          <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> 
           <GradientStop Color="#FFC4C4C4" Offset="0.0" /> 
           <GradientStop Color="#FFF8F8F8" Offset="0.10" /> 
          </LinearGradientBrush> 
         </Border.Background> 
        </Border> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsMouseOver"> 
          <Setter Property="BorderThickness" Value="1"></Setter> 
          <Setter Property="BorderBrush" Value="Orange"></Setter> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

마우스 커서가 텍스트 상자 위에있을 때 나는 Trigger 태그 내부에 쓴 속성을 설정해야이 코드 조각 :

    <ControlTemplate.Triggers> 
         <Trigger Property="IsMouseOver"> 
          <Setter Property="BorderThickness" Value="1"></Setter> 
          <Setter Property="BorderBrush" Value="Orange"></Setter> 
         </Trigger> 
        </ControlTemplate.Triggers> 

하지만이 트리거는 단순히 시작되지 않습니다. 아무 반응이 없습니다. 왜? 그리고 어떻게 이것을 할 수 있습니까?

+0

태그 질문에 접두어 아무 소용이 없습니다를 지정해야합니다 생각합니다. 이를위한 태그 시스템이 있습니다. 자세한 내용은 http://meta.stackexchange.com/q/19190/147072를 참조하십시오. – Patrick

답변

0

난 당신이 경계 요소 이름

<Trigger Property="IsMouseOver" Value="true" > 
    <Setter TargetName="Border" Property="BorderThickness" Value="1"></Setter> 
    <Setter TargetName="Border" Property="BorderBrush" Value="Orange"></Setter> 
</Trigger> 
0

당신은 이것을 시도해 볼 수 있습니다 트리거에 Value 속성을 추가하고 그것을 true로 설정하십시오. 또한 컨트롤 템플릿에있는 테두리의 속성을 변경하려면 대상 이름을 추가해야합니다.

<Trigger Property="IsMouseOver" Value="true" > 
     <Setter Property="BorderThickness" TargetName="Border" Value="1"></Setter> 
     <Setter Property="BorderBrush" TargetName="Border" Value="Orange"></Setter> 
</Trigger> 
관련 문제