2015-10-15 47 views
1

我有以下的WPF代码停止WPF故事板和保持实际值

<Window.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary> 
       <Image x:Key="MyImage" Source="../Assets/icon.ico"/> 
      </ResourceDictionary> 
     </ResourceDictionary.MergedDictionaries> 

     <Storyboard x:Key="AkomiLogoAnimation"> 
      <DoubleAnimation 
          Storyboard.TargetProperty="(Image.RenderTransform).(RotateTransform.Angle)" 
          By="360" 
          SpeedRatio="0.5" 
          RepeatBehavior="Forever" 
          FillBehavior="Stop" 
          /> 
     </Storyboard> 

    </ResourceDictionary> 
</Window.Resources> 
     <TextBox x:Name="txtAuto"/> 

       <Image Source="../Assets/icon.ico" Width="20" Height="20" RenderTransformOrigin=".5,.5"> 
       <Image.Resources> 
        <converter:IsNullConverter x:Key="IsNullConverter"/> 
       </Image.Resources> 
       <Image.RenderTransform> 
       <RotateTransform Angle="0" /> 
      </Image.RenderTransform> 
       <Image.Style> 
        <Style> 
        <Style.Triggers> 
          <DataTrigger Binding="{Binding ElementName=txtAuto, Path=Text, Converter={StaticResource IsNullConverter}, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}" Value="False"> 
          <DataTrigger.EnterActions> 
           <BeginStoryboard Name="AkomiRotation" Storyboard="{StaticResource AkomiLogoAnimation}"> 
           </BeginStoryboard> 
          </DataTrigger.EnterActions> 
         </DataTrigger> 
          <DataTrigger Binding="{Binding ElementName=txtAuto, Path=Text, Converter={StaticResource IsNullConverter}, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}" Value="True"> 
           <DataTrigger.EnterActions> 
           <StopStoryboard BeginStoryboardName="AkomiRotation" > 
           </StopStoryboard> 
          </DataTrigger.EnterActions> 
         </DataTrigger> 
        </Style.Triggers> 
        </Style> 
       </Image.Style> 
      </Image> 

我们的目标是尽快为一些文字已经进入旋转图像。但是停止故事板可以让图像角度跳跃到初始值。

我尝试添加FillBehavior="HoldEnd"到故事板的定义,但不起作用。

有什么建议吗?也许我可以在动画结束时访问角度值,并将此值设置为RotateTransform

+0

的arent你旋转360(即所有的方式回到它开始)动画改变fillbehavior ????? – TYY

+0

@TYY是的,它会不断地在同一方向旋转 –

回答

3

您是否试过PauseStoryboard而不是停止?此外,你应该在

+0

我想补充一点,如果使用'PauseStoryboard'(这可能是唯一的选择),我们不需要关心'FillBehavior','FillBehavior'是只有当故事板实际结束时才有意义。 –

+0

但是如果动画暂停,让60°后说什么,然后你想再次旋转它没有剩余的300,但360°? – Liero

+0

故事板应该永久重复,当然。不用重复,迟早会停止,然后'PauseStoryboard'不起作用。 –