質問
2013年11月20日水曜日 4:52
XAMLにて、複数の条件の中でどれかを満たした際に、動作するTriggerを作成したいです。
ご存じの方がいれば教えていただきたいです。
ソースの例を上げますと、
例えば、ボタンのTagプロパティの値が、Nullか、空白だった場合に、
ボタンを無効化するようなことを考えております。
XAML
<ControlTemplate.Triggers>
<Trigger Property="Tag" Value="{x:Null}" >
<Setter Property="IsEnabled" Value="False" />
</Trigger>
<Trigger Property="Tag" Value="" >
<Setter Property="IsEnabled" Value="False" />
</Trigger>
<Trigger Property="IsEnabled" Value="False" >
<Setter TargetName="buttonPolygon" Property="Stroke" Value="Gray" />
<Setter TargetName="buttonPolygon" Property="Polygon.Fill" Value="LightGray" />
</Trigger>
</ControlTemplate.Triggers>
MulitiTriggerを利用すれば、複数の条件全てを満たす場合に利用できるとは思いますが、
複数の条件のどれかを満たす場合に動くTriggerを作成する場合は、
条件ごとにTriggerを一つ一つ作成しないといけないのでしょうか?
すべての返信 (3)
2013年11月20日水曜日 5:03 ✅回答済み
DataTriggerを使って、IValueConverterと併用するとか。
2013年11月20日水曜日 6:49 ✅回答済み
私もDataTriggerrで処理することが多いです。
まず、ボタンを有効にするかどうかのプロパティを追加します。例えば、「ボタン有効化」という名前のプロパティにします。このプロパティをボタンを有効にしたい場合はtrueに、無効にしたい場合はfalseにします。
次に、以下のようなStyleと作り、ボタンに適用します。このStyleをアプリケーション全体で使えるようにしておくと便利です。
<Style x:Key="ボタンStyle" TargetType="{x:Type Button}">
<Setter Property="IsEnabled" Value="True" />
<Style.Triggers>
<DataTrigger Binding="{Binding ボタン有効化}" Value="false">
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
2013年11月21日木曜日 23:34
お忙しいところ、ご回答ありがとうございました。
教えていただいたDatatriggerを利用する方法で、うまく分岐させることができました。
ソースの例まで教えていただいてありがとうございます。