注関連する質問をしました (受け入れられた回答付き): DataTrigger と Trigger を組み合わせる方法は?
私が求めているものを達成するには、 anEventTrigger
と aを組み合わせる必要があると思います: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 がHighlight
境界線の不透明度を 0 から 1 の間でアニメートし、アイテムが最初にロードされたときに再び元に戻り、ユーザーの注意を引くというものです。はDataTrigger
、アニメーション化する回数を決定します。ビューモデルが項目を報告した場合IsCritical
、アニメーションは 5.5 回発生し (不透明度 1 で終了)、それ以外の場合は 5 回発生します (不透明度 0 で終了します)。
ただし、DataTrigger のセッターが次のエラーで失敗するため、上記の XAML は機能しません。
「LoadedAnimation」という名前の子が VisualTree に見つかりません。
けっこうだ。では、カスタムの値コンバーターを使用したり、ビュー モデルにアニメーション カウントを配置してバインドしたりすることをためらう場合、どのような選択肢がありますか?