문제

나는 컨트롤을 위해 XAML 스타일로 작업합니다. 아래 코드는 스택 패널의 색상을 설정하기위한 것입니다. 잘 작동하지만 내가하고 싶은 다른 일이 있습니다. 트리거가 활성화되면 스택 패널 내부의 모든 어린이 항목에 대한 글꼴 색상을 설정하려고합니다.

현재 나는 스택 패널 안에 텍스트 블록 만 가지고 있으며 텍스트를 위해 별도의 스타일을 쉽게 만들 수 있다는 것을 알고 있습니다. 그러나이 스타일이 트리거되면 모든 텍스트 블록이 아니라 하나만 영향을 미칩니다. 그러나 패널의 마우스 오버 트리거가있는 즉시 스택 패널 내부의 모든 항목을 변경하고 싶습니다.

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>    
도움이 되었습니까?

해결책

트리거에 이것을 추가하십시오.

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

다른 팁

올레가 말했듯이, 첨부 된 속성을 설정할 수 있습니다. TextElement.Foreground 사용자 정의 값으로. 시각적 트리의 자식 제어/UI 노드의 경우 속성이 설정되지 않으면 WPF는 값을 찾아 사용할 때까지 UI 계층을 걸어 올립니다. 이는 모든 아동 통제가 부모 수준에서 정의 된 재산 가치를 공유 할 수 있음을 의미합니다.

이것은 모든 텍스트 블록에 대해 작동해야합니다. 그러나 StackPanel에 텍스트 상자가 포함되어 있으면 텍스트 색상에 영향을 미치지 않습니다. 제어 기반 클래스의 전경 속성을 사용하므로 가능한 모든 하위 요소 유형으로 테스트하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top