NOTEは、私が(受け入れ答えで)関連の質問をしていますHow to combine DataTrigger and Trigger?DataTriggerとEventTriggerを組み合わせるにはどうすればいいですか?
は私がEventTrigger
を結合する必要があると思うとDataTrigger
は、私は何を達成するために後:
- アイテムがリストボックスに表示されると、しばらくの間点滅する必要があります
- アイテムが「クリティカル」の場合はハイライト表示のままにしてください
は現在、私はこのようになりますのDataTemplateを持っている:
<DataTemplate DataType="{x:Type Notifications:NotificationViewModel}">
<Grid HorizontalAlignment="Stretch">
<Border Name="Background" CornerRadius="8" Background="#80c0c0c0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
<Border Name="Highlight" CornerRadius="8" Background="Red" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
<!-- snip actual visual stuff -->
<Grid.Triggers>
<EventTrigger RoutedEvent="Grid.Loaded">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation x:Name="LoadedAnimation"
Storyboard.TargetName="Highlight"
Storyboard.TargetProperty="Opacity"
From="0" To="1"
RepeatBehavior="5x"
Duration="0:00:0.2"
AutoReverse="True" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Grid.Triggers>
</Grid>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=IsCritical}" Value="True">
<Setter TargetName="LoadedAnimation" Property="RepeatBehavior" Value="5.5x" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
アイデアは、EventTriggerは、アイテムが最初にロードされるときに、描画を繰り返し再び0と1の間のHighlight
境界線の不透明度をアニメーション化していることですユーザーの注意を喚起する。 DataTrigger
は、アニメートする回数を決定します。ビューモデルで項目IsCritical
が報告された場合、アニメーションは5.5回(不透明度1で終了する)、それ以外の場合は5回(不透明度0で終わる)表示されます。
ただし、上記のXAMLは機能しませんDataTriggerのセッターが失敗します。
名前が 'LoadedAnimation'の子がVisualTreeに見つかりません。
かなり十分です。ですから、カスタム値コンバーターを使用したり、アニメーションカウントをビューモデルに入れてバインドしたりするのは恥ずかしいですが、私の選択肢は何ですか?
役立つかもしれないhttp://stackoverflow.com/questions/2764415/how-to-give-the-condition-for-eventtrigger –