注意我已要求相關的問題(與所接受的答案):How to combine DataTrigger and Trigger?如何結合DataTrigger和EventTrigger?
我想我需要一個EventTrigger
結合和DataTrigger
達到我所追求的:
- 當一個項目出現在我的ListBox中時,它應該會閃爍片刻
- 如果項目是'Critical',那麼它應該保持突出顯示
目前,我有一個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處結束)。
然而,上述XAML不起作用,因爲DataTrigger的setter失敗:
在VisualTree中找不到名爲'LoadedAnimation'的子項。
不夠公平。因此,使用自定義值轉換器或將動畫放在視圖模型上並綁定到視圖模型時,我有什麼選擇?
這可能是有幫助的http://stackoverflow.com/questions/2764415/how-to-give-the-condition-for-eventtrigger – 2014-01-23 12:35:54