DataTriggerとTriggerの違いがよくわからん
方法 : プロパティ値が変化したときにアニメーションをトリガーする
方法 : データが変化したときにアニメーションをトリガする
ん?と思うじゃろ。人目みただけで「プロパティとデータの違いって何?」って思うじゃろ
思わん君は色盲か、それとも目が節穴か
というわけなので実験してみたのです。
<UserControl.Resources> <Storyboard x:Key="rectAnimation"> <DoubleAnimation Storyboard.TargetProperty="Opacity" To="0.25" Duration="0:0:1"/> </Storyboard> <Style x:Key="PropertTriggerExampleButtonStyle" TargetType="{x:Type Button}"> <Setter Property="Opacity" Value="1"/> <Style.Triggers> <Trigger Property="IsMouseOver" Value="true"> <Trigger.EnterActions> <BeginStoryboard Storyboard="{StaticResource rectAnimation}"/> </Trigger.EnterActions> </Trigger> </Style.Triggers> </Style> </UserControl.Resources> <StackPanel> <Button x:Name="rect" Style="{StaticResource PropertTriggerExampleButtonStyle}" Content="move the mouse over me"/> </StackPanel>
このソースコードのTriggerとなってるところをDataTriggerにする
怒られました。そんなPropertyはないと怒られました。
で、何が問題になってるの?
WPF4.5入門 その48 「WPFのアニメーション その1」 - かずきのBlog@hatena
こちらのページで紹介されてるサンプルソース、EventTriggerをDataTriggerに入れ替えると怒られてしまうのですよ(続き書きました。解決編へ:
TriggerとAnimationを組み合わせる もしくは DataTriggerとTriggerて何が違うのよって話 - 「Androidは電気羊の夢を見るか」を読みたい管理者のブログ
)。
調べてみました。
DataTrigerもTriggerもTriggerBaseクラスを継承している
なるほど!
で、TriggerBaseを継承しているクラスは他にどんなのがあるの?
- Trigger This is the simplest form of trigger. It watches for a change in a dependency property
and then uses a setter to change the style.
- MultiTrigger This is similar to Trigger but combines multiple conditions. All the conditions must
be met before the trigger springs into action.
- DataTrigger This trigger works with data binding. It’s similar to Trigger, except it watches for a
change in any bound data.
- MultiDataTrigger This combines multiple data triggers.
EventTrigger This is the most sophisticated trigger. It applies an animation when an event occurs.
なるほど。
単なるTriggerとMultiTriggerがあり、DataTriggerとEventTriggerがある
わかったような分からないような
5つあるんですね。
で、私ひとつ勘違いしていました。
トリガ オブジェクトがアクティブになったときに適用する、TriggerAction オブジェクトのコレクションを取得します。
TriggerBase.EnterActions プロパティ (System.Windows)
なんですとー。
発火タイミングはオブジェクトがアクティブになった瞬間だったのかー!
うーむうーむ
まだまだ知らないことがたくさんありそうです。