xaml에서 MultiDataTrigger의 Condition 작성 중 Null, 공백을 체크해야 할 일이 생겼다.
처음엔 Value 값으로 {x:Null}을 작성하면 되려나 했는데 작동하지 않았다.
Converter를 작성할까 하다가 더 찾아봤더니 네임스페이스를 추가하여 Value에서 공백을 체크할 수 있는 방법이 있었다.
1. 네임스페이스 작성
xmlns:sys="clr-namespace:System;assembly=mscorlib"
2. xaml 작성
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock Text="값이 없으면 글씨 색이 빨강이 된다." />
<StackPanel Orientation="Horizontal">
<Label Content=" 값 : " />
<TextBox x:Name="TextBox1" Text="기본값" VerticalContentAlignment="Center" Width="100"/>
</StackPanel>
</StackPanel>
3. TextBlock에 Style DataTrigger 작성
DataTrigger Binding은 ElementName에 TextBox의 x:Name을 작성하고 Value는 {x:Static sys:String.Empty}를 작성하여 문자열이 공백일 때를 체크한다.
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock Text="값이 없으면 글씨 색이 빨강이 된다.">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=TextBox1, Path=Text}" Value="{x:Static sys:String.Empty}">
<Setter Property="Foreground" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<StackPanel Orientation="Horizontal">
<Label Content=" 값 : " />
<TextBox x:Name="TextBox1" Text="기본값" VerticalContentAlignment="Center" Width="100"/>
</StackPanel>
</StackPanel>
TextBox에 입력된 값이 없으면 TextBlock의 글씨 색이 변한다.
예제는 DataTrigger를 사용했는데 MultiDataTrigger의 Condition작성 시에도 사용 가능하다.
string.IsNullOrEmpty 메서드와 동일한 결과를 얻기 위해서 값이 {x:Null}인 경우에도 프로퍼티를 설정해 주는 게 좋습니다.