WPF DataTriggerメモ - TakanoriMukai/MyNotes GitHub Wiki
テキストボックスに特定の値が入力された時に、ボタンを非活性化させる。 バインドの指定方法で少し嵌ったのでメモ。
イベントのターゲットとなるプロパティにDataTriggerを定義したスタイルを適用する。 イベントのソースとなるプロパティをDataTriggerでバインドする。 この時、ElementNameにコントロールName、Pathにプロパティを指定してあげないとうまく動かない。 また、「特定の値」はバインド時にValueで指定する。
スタイルの定義
<local:ViewModel1 x:Key="viewModel"/>
<Style x:Key="ButtonStyle" TargetType="Button">
<Setter Property="IsEnabled" Value="False"/>
<Style.Triggers >
<!-- バインド先のコントロール名とプロパティを指定する -->
<DataTrigger Binding="{Binding ElementName=textBox,Path=Text}" Value="30">
<Setter Property="IsEnabled" Value="True"/>
</DataTrigger>
</Style.Triggers>
</Style>
イベントソースとなるテキストボックス
<TextBox x:Name="textBox" Height="30" Margin="155,10,257,0" TextWrapping="Wrap" VerticalAlignment="Top"
DataContext="{StaticResource viewModel}"
Text="{Binding Text}"
/>
ViewModel
using System.ComponentModel;
public class ViewModel1 : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public string Text { get; set; }
}