2014-01-18 53 views
0
<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,該動畫將包含滑塊的StackPanel的背景進行動畫處理。如何在ColorAnimation在DataTrigger內結束後恢復到以前的顏色?

但是我希望背景的顏色在閃爍結束時恢復到以前的值(PaleTurquoise)。我如何在xaml中完成此操作?

作爲進一步的問題,即使我的ViewModel中的TimeLeft在初始化時爲0,我如何才能在應用程序第一次加載時不會觸發DataTrigger?

回答

0

到底我爲背景的默認顏色的靜態資源,並把另一ColorAnimation因此第一個之後:

<ColorAnimation To="{StaticResource alarmBackgroundColour}" BeginTime="0:0:5"/> 

要回答讓扳機,沒有第二部分在開始時啓用我通過使ValueConverter僅爲第一個呼叫返回1而繞過它。

歡迎任何更好的解決方案。

相關問題