수색…
소개
 Trigger , DataTrigger , MultiTrigger , MultiDataTrigger 및 EventTrigger 포함하여 WPF에서 사용할 수있는 다양한 유형의 트리거에 대해 설명합니다. 
 트리거는 FrameworkElement 또는 FrameworkContentElement 에서 파생되는 모든 클래스가 트리거에 정의 된 특정 조건을 기반으로 속성을 설정하거나 변경하도록 허용합니다. 기본적으로 요소의 스타일을 지정할 수 있으면 트리거 할 수도 있습니다. 
비고
-  EventTrigger를 제외한 모든 트리거는<Style>요소 내에 정의되어야합니다.EventTrigger는<Style>요소 또는 컨트롤의Triggers속성에서 정의 할 수 있습니다.
-  <Trigger>요소는 임의의 수의<Setter>요소를 포함 할 수 있습니다. 이 요소는<Trigger>요소의 조건이 충족 될 때 포함 요소의 속성을 설정합니다.
-  루트 요소 마크 업에서 속성이 정의 된 경우 트리거 조건이 충족 되더라도 <Setter>요소에 정의 된 속성 변경은 적용되지 않습니다.<TextBlock Text="Sample">마크 업을 고려하십시오. 루트 프로퍼티 정의가 스타일에 정의 된 프로퍼티에 대한 선행을 취하기 때문에 프로 시저의Text프로퍼티는 트리거에 따라 절대로 바뀌지 않습니다.
- 바인딩과 마찬가지로 일단 트리거가 사용되면 수정할 수 없습니다.
방아쇠
 Trigger 는 다섯 가지 트리거 유형 중 가장 단순한 것으로 동일한 컨트롤 내의 다른 속성을 기반으로 속성을 설정합니다. 
<TextBlock>
    <TextBlock.Style>
        <Style TargetType="{x:Type TextBlock}">
            <Style.Triggers>
                <Trigger Property="Text" Value="Pass">
                    <Setter Property="Foreground" Value="Green"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>
 이 예제에서는 Text 속성이 문자열 "Pass" 같을 때 TextBlock 의 전경색이 녹색으로 바뀝니다. 
MultiTrigger
 MultiTrigger 는 동일한 컨트롤 내의 속성에만 적용된다는 점에서 표준 Trigger 와 유사합니다. 차이점은 MultiTrigger 에는 트리거가 작동하기 전에 충족되어야하는 여러 조건이 있다는 것입니다. 조건은 <Condition> 태그를 사용하여 정의됩니다. 
<TextBlock x:Name="_txtBlock" IsEnabled="False">
    <TextBlock.Style>
        <Style TargetType="{x:Type TextBlock}">
            <Style.Triggers>
                <MultiTrigger>
                    <MultiTrigger.Conditions>
                        <Condition Property="Text" Value="Pass"/>
                        <Condition Property="IsEnabled" Value="True"/>
                    </MultiTrigger.Conditions>
                    <Setter Property="Foreground" Value="Green"/>
                </MultiTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>
 두 조건이 모두 충족 될 때까지 MultiTrigger 가 활성화되지 않습니다. 
DataTrigger
 DataTrigger 는 자체 컨트롤, 다른 컨트롤 또는 심지어 비 UI 클래스의 속성 인 모든 속성에 연결할 수 있습니다. 다음의 간단한 클래스를 생각해보십시오. 
public class Cheese
{
    public string Name { get; set; }
    public double Age { get; set; }
    public int StinkLevel { get; set; }
}
 다음 TextBlock 의 DataContext 로 연결합니다. 
<TextBlock Text="{Binding Name}">
    <TextBlock.DataContext>
        <local:Cheese Age="12" StinkLevel="100" Name="Limburger"/>
    </TextBlock.DataContext>
    <TextBlock.Style>
        <Style TargetType="{x:Type TextBlock}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding StinkLevel}" Value="100">
                    <Setter Property="Foreground" Value="Green"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>
 앞의 코드에서 TextBlock.Foreground 속성은 녹색입니다. 우리가 변경 한 경우 StinkLevel 100 이외의 다른 우리의 XAML에 속성을의 Text.Foreground 가 기본값입니다에 속성이 되돌아갑니다.