development

WPF에서 트리거의 순서가 중요합니까?

big-blog 2020. 12. 30. 20:18
반응형

WPF에서 트리거의 순서가 중요합니까?


다음 xaml이 있습니다.

<DockPanel>
    <DockPanel.Resources>
        <Style TargetType="Button">
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Foreground" Value="Yellow"></Setter>
                </Trigger>
                <Trigger Property="IsPressed" Value="True">
                    <Setter Property="Foreground" Value="Green"></Setter>
                </Trigger>
            </Style.Triggers>
        </Style>
    </DockPanel.Resources>
    <Button Content="Cut" Height="30" Width="75"/>
</DockPanel>

버튼 위에 마우스를 올리면 전경이 노란색으로 바뀌고 버튼을 누르면 전경이 녹색으로 바뀝니다.

이제 XAML에서 트리거의 순서를 반대로하면 전경이 위에 마우스를 올려 놓으면 노란색으로 변경되지만 버튼을 누르면 전경이 녹색으로 변경되지 않습니다.

이것에 대한 설명은 무엇입니까? 한 트리거가 다른 트리거보다 우선합니까?


WPF는 선언 된 순서대로 트리거를 처리합니다. 두 번째 예에서 전경은 너무 짧게 녹색으로 변경됩니다. 그러나 IsMouseOver 트리거가 실행되고 색상이 다시 노란색으로 설정됩니다.

IsMouseOver는 우선 순위 측면에서 IsPressed와 관계가 없습니다. 중요한 것은 트리거의 XAML에서 선언 순서입니다.


요컨대 : 트리거는 순서대로 처리됩니다.

이후 트리거는 이전 트리거보다 우선합니다.

참조 URL : https://stackoverflow.com/questions/561178/in-wpf-does-the-order-of-triggers-matter

반응형