WPF DataTriggerメモ - TakanoriMukai/MyNotes GitHub Wiki

やりたいこと

テキストボックスに特定の値が入力された時に、ボタンを非活性化させる。 バインドの指定方法で少し嵌ったのでメモ。

DataTriggerを使う

イベントのターゲットとなるプロパティに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; }
	}
⚠️ **GitHub.com Fallback** ⚠️