<DataTemplate>
<StackPanel Name="stack" Background="PaleTurquoise">
<Grid>
<Slider Name="sld" Value="{Binding TimeLeft}" />
</Grid>
</StackPanel>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding ElementName=sld, Path=Value}" Value="0">
<DataTrigger.EnterActions>
<BeginStoryboard Name="flash">
<Storyboard TargetName="stack" Storyboard.TargetProperty="Background.(SolidColorBrush.Color)">
<ColorAnimation From="MediumSpringGreen" To="Crimson" Duration="0:0:0.1" AutoReverse="True" RepeatBehavior="0:0:5"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<RemoveStoryboard BeginStoryboardName="flash"/>
</DataTrigger.ExitActions>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
这是我的闹钟应用程序中的xaml的缩减版本。当滑块的值达到0时,触发ColorAnimation,动画显示包含Slider的StackPanel的背景。
但是,当闪烁结束时,我希望背景颜色恢复到之前的值(PaleTurquoise)。我如何在xaml中完成此任务?
作为进一步的问题,即使我的ViewModel中的TimeLeft在初始化时为0,我怎样才能在首次加载应用程序时触发DataTrigger?
答案 0 :(得分:0)
最后我为背景的默认颜色制作了一个StaticResource,并在第一个之后放了另一个ColorAnimation:
<ColorAnimation To="{StaticResource alarmBackgroundColour}" BeginTime="0:0:5"/>
要回答触发器在启动时不启动的第二部分,我通过使ValueConverter仅为第一次调用返回1来攻击它。
欢迎任何更好的解决方案。