UWP:在ListView或ItemsControl中闪烁文本的故事板

时间:2017-01-14 07:24:15

标签: c# listview storyboard uwp windows-10-universal

几个月前,在这个论坛上,我已经了解了Storyboard,并且我在应用程序上一直非常重视它。现在,我打了另一个路障,希望你能帮助我。

当订单状态发生变化时,我需要在ItemsControl或ListView中进行闪烁动画。如果我需要将动画更改为闪烁,它可以正常工作。问题是如何阻止它。

这是我的代码:

<Viewbox>
    <i:Interaction.Behaviors>
        <ic:DataTriggerBehavior Binding="{Binding OrderStatus, Mode=OneWay, Converter={StaticResource EnumConverter}}" ComparisonCondition="Equal" Value="Cancelled">
            <im:ControlStoryboardAction ControlStoryboardOption="Play">
                <im:ControlStoryboardAction.Storyboard>
                    <Storyboard>
                        <DoubleAnimation Storyboard.TargetProperty="(FrameworkElement.Opacity)"
                                         Storyboard.TargetName="lblOrderStatus"
                                         From="1" To="0" AutoReverse="True" BeginTime="0:0:0.5" Duration="0:0:0.5" RepeatBehavior="Forever" />
                    </Storyboard>
                </im:ControlStoryboardAction.Storyboard>
             </im:ControlStoryboardAction>
         </ic:DataTriggerBehavior>
         <ic:DataTriggerBehavior Binding="{Binding OrderStatus, Mode=OneWay, Converter={StaticResource EnumConverter}}" ComparisonCondition="NotEqual" Value="Cancelled">
             <im:ControlStoryboardAction ControlStoryboardOption="Stop">
                 <im:ControlStoryboardAction.Storyboard>
                     <Storyboard>
                         <DoubleAnimation Storyboard.TargetProperty="(FrameworkElement.Opacity)"
                                          Storyboard.TargetName="lblOrderStatus"
                                          From="1" To="0" AutoReverse="True" BeginTime="0:0:0.5" Duration="0:0:0.5" RepeatBehavior="Forever" />
                     </Storyboard>
                 </im:ControlStoryboardAction.Storyboard>
             </im:ControlStoryboardAction>
         </ic:DataTriggerBehavior>
     </i:Interaction.Behaviors>
     <TextBlock x:Name="lblOrderStatus" Text="{Binding OrderStatus, Mode=OneWay}"></TextBlock>
 </Viewbox>

如您所见,我有两个触发器。当OrderStatus更改为已取消时,它将运行动画。但是当OrderStatus更改为 Acknowledge 或其他任何内容时,动画仍在运行。 这是因为它实际上是2个单独的故事板。

我尝试使用 StaticResource ,但它只会更改第一行。

<Viewbox>
    <Viewbox.Resources>
        <Storyboard x:Name="sbBlinking">
            <DoubleAnimation Storyboard.TargetProperty="(FrameworkElement.Opacity)"
                             Storyboard.TargetName="lblOrderStatus"
                             From="1" To="0" AutoReverse="True" BeginTime="0:0:0.5" Duration="0:0:0.5" RepeatBehavior="Forever" />
        </Storyboard>
    </Viewbox.Resources>
    <i:Interaction.Behaviors>
        <ic:DataTriggerBehavior Binding="{Binding OrderStatus, Mode=OneWay, Converter={StaticResource EnumConverter}}" ComparisonCondition="Equal" Value="Cancelled">
            <im:ControlStoryboardAction Storyboard="{StaticResource sbBlinking}" ControlStoryboardOption="Play" />
        </ic:DataTriggerBehavior>
        <ic:DataTriggerBehavior Binding="{Binding OrderStatus, Mode=OneWay, Converter={StaticResource EnumConverter}}" ComparisonCondition="NotEqual" Value="Cancelled">
            <im:ControlStoryboardAction Storyboard="{StaticResource sbBlinking}" ControlStoryboardOption="Stop" />
        </ic:DataTriggerBehavior>
    </i:Interaction.Behaviors>
    <TextBlock x:Name="lblOrderStatus" Text="{Binding OrderStatus, Mode=OneWay}"></TextBlock>
</Viewbox>

关于如何解决这个问题的任何想法?再次感谢...

0 个答案:

没有答案
相关问题