2011-05-06 3 views
2

자식 컨트롤의 트리거를 통해 부모 컨트롤의 속성을 수정하려고합니다. 특히, 나는 테두리의 자식 TextBox의 OnKeyboardFocus 트리거를 통해 테두리의 DropShaddowEffect의 불투명도를 수정하려고 시도하고 있습니다.Xaml : 자식 컨트롤 트리거를 사용하여 부모 컨트롤 속성 변경

그러나 setter의 TargetName은 이름이 인식되지 않는다는 오류를 제공합니다. 여기

은 XAML입니다 :
<Border x:Name="HeaderTextBoxBorder"> 
    <Border.Effect> 
     <DropShadowEffect Opacity="20"/>          
    </Border.Effect> 
    <TextBox x:Name="HeaderTextBox"> 
     <TextBox.Style> 
      <Style 
       TargetType="{x:Type TextBox}"> 
       <!-- Attmpting to change opacity on focus --> 
       <Style.Triggers> 
        <Trigger 
         Property="IsKeyboardFocused" 
         Value="True"> 
          <Setter 
           <!-- The error occurs here --> 
           TargetName="HeaderTextBoxBorder" 
           Property="Effect"> 
           <Setter.Value> 
            <DropShadowEffect Opacity="100"/> 
           </Setter.Value> 
          </Setter> 
        </Trigger> 
       </Style.Triggers> 
      </Style> 
     </TextBox.Style> 
    </TextBox> 
</Border> 

가 XAML을 보면, 같은 잘못된 튀어 나올 있나요?

감사합니다.

답변

3

스타일은 별개의 이름 범위이므로 해당 이름을 사용하여 테두리에 액세스 할 수 없습니다.

당신은 TextBox.IsKeyboardFocused 요소에 Border.Effect 속성을 바인딩하고 불투명도 그런 식으로 전환해야 할 것, 뭔가 같은 : CusotmConverter가 따라 IValueConverter 반환 중 20 또는 100를 구현

<Border.Effect> 
    <DropShadowEffect Opacity="{Binding ElementName=HeaderTextBox, Path=IsKeyboardFocused, Converter={StaticResource local:CustomConverter}" /> 
</Border.Effect> 

부울 값에.

+1

작동하지 않을 경우 설정자를 통해 속성 속성에 액세스 할 수 없습니다. –

+0

@ H.B. - 나는 "할 수 있을지도 모른다"고 말했다 .-) 당신 말이 맞아요. 잊어 버렸습니다. – CodeNaked

+0

나는 그것을 놓치지 않았다. 단지 당신에게 알려주는 것이었다. –

관련 문제