WPFスタイルトリガ
フリップフロップ
1.属性トリガー
ある属性に特定の値がある場合、属性トリガはSetterを実行します.属性がこの値を失うと、属性トリガはSetterをやり直します.
2.データトリガー
同じ属性のフリップフロップであるが、データフリップフロップは任意である.NET属性は、依存属性のみによってトリガされるのではなく、予期せぬ事故をトリガーします.
3.イベントトリガー
建設中...
4.より複雑な論理をフリップフロップで表す
1.属性トリガー
ある属性に特定の値がある場合、属性トリガはSetterを実行します.属性がこの値を失うと、属性トリガはSetterをやり直します.
<StackPanel.Resources>
<!-- Style -->
<Style x:Key="buttonStyle" TargetType="{x:Type Button}">
<Style.Triggers>
<!-- -->
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="RenderTransform">
<Setter.Value>
<RotateTransform Angle="10"/>
</Setter.Value>
</Setter>
<Setter Property="Foreground" Value="Black"/>
</Trigger>
</Style.Triggers>
<!-- -->
<Setter Property="Width" Value="50"/>
<Setter Property="Height" Value="50"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="Background" Value="BurlyWood"/>
</Style>
<!-- Style -->
<Style x:Key="textBoxStyle" TargetType="{x:Type TextBox}">
<Style.Triggers>
<!-- -->
<Trigger Property="Validation.HasError" Value="True">
<Setter Property="Background" Value="Red"/>
<!-- RelativeSource ErrorContent -->
<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self},
Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
<!-- -->
<Setter Property="Background" Value="Azure"/>
</Style>
</StackPanel.Resources>
<Button Name="but" Style="{StaticResource buttonStyle}">Button</Button>
<TextBox Name="txt" Style="{StaticResource textBoxStyle}">
<TextBox.Text>
<Binding ElementName="but" Path="Content">
<!-- -->
<Binding.ValidationRules>
<local:JpgValidation/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
2.データトリガー
同じ属性のフリップフロップであるが、データフリップフロップは任意である.NET属性は、依存属性のみによってトリガされるのではなく、予期せぬ事故をトリガーします.
<StackPanel.Resources>
<Style x:Key="textBoxStyle" TargetType="{x:Type TextBox}">
<Style.Triggers>
<!-- disabled , -->
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Text}" Value="disabled">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
</Style.Triggers>
<!-- -->
<Setter Property="Background" Value="{Binding RelativeSource={RelativeSource Self}, Path=Text}"/>
</Style>
</StackPanel.Resources>
3.イベントトリガー
建設中...
4.より複雑な論理をフリップフロップで表す
<StackPanel.Resources>
<Style x:Key="textBoxStyle2" TargetType="{x:Type TextBox}">
<Style.Triggers>
<!-- , , -->
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="Red"/>
</Trigger>
<Trigger Property="IsFocused" Value="True">
<Setter Property="Foreground" Value="Red"/>
</Trigger>
<!-- Trigger -->
<MultiTrigger>
<!-- , , -->
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True"/>
<Condition Property="IsFocused" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="Background" Value="Green"/>
</MultiTrigger>
</Style.Triggers>
</Style>
</StackPanel.Resources>