2015-10-15 46 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'不起作用。 –