2009-03-02 3 views
10

내 컨트롤에 XAML 스타일을 사용하고 있습니다. 아래 코드는 스택 패널의 색상을 설정하는 코드입니다. 그것은 잘 작동하지만 내가하고 싶은 다른 것이 있습니다. 방아쇠가 활성화되면 스택 패널 안에있는 모든 하위 항목의 글꼴 색상을 설정하고 싶습니다.WPF/XAML 스타일 설정 하위 항목의 속성?

지금은 스택 패널 안에 텍스트 블록 만 있으며, 텍스트 봇용으로 별도의 스타일을 쉽게 만들 수 있다는 것을 알고 있습니다. 그러나이 스타일이 트리거되면 모든 텍스트 블록에만 영향을 미치며 ONE에만 영향을 미칩니다. 하지만 패널의 마우스 오버 트리거가 발생하는 즉시 스택 패널 내부의 모든 항목을 변경하고 싶습니다.

XAML에서이 작업을 수행 할 수 있습니까? 또는 일반 이벤트를 코딩해야합니까?

<Style x:Key="XStack" TargetType="StackPanel"> 
    <Setter Property="Background"> 
     <Setter.Value> 
      <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
       <GradientStop Color="White" Offset="0"/> 
       <GradientStop Color="SkyBlue" Offset="6"/>      
      </LinearGradientBrush> 
     </Setter.Value> 
    </Setter> 
    <!-- Trigger--> 
    <Style.Triggers> 
     <Trigger Property="IsMouseOver" Value="True" > 
      <Setter Property="Background" Value="SkyBlue"/> 
     </Trigger> 
    </Style.Triggers> 
</Style>  
+0

감사합니다. 꿈처럼 작동합니다! – TalkingCode

답변

14

트리거이 추가 :처럼 올레 말했다

<Setter Property="TextElement.Foreground" Value="Blue"></Setter>

3

, 당신은 사용자 정의 값에 연결된 속성 TextElement.Foreground을 설정할 수 있습니다. 시각 트리의 자식 컨트롤/UI 노드의 경우 속성이 설정되어 있지 않으면 WPF는 값을 찾고 사용할 때까지 UI 계층 구조를 따라갑니다. 이것은 모든 하위 컨트롤이 부모 수준에서 정의 된 속성 값을 공유 할 수 있음을 의미합니다.

이 방법은 모든 TextBlocks에서 작동하지만 StackPanel에 TextBox가 포함되어 있으면 텍스트 색상이 영향을받지 않습니다. Control 기본 클래스의 Foreground 속성을 사용하므로 가능한 모든 하위 요소 유형을 사용하여 테스트해야합니다.