2013-08-24 18 views
3

在WPF中,我試圖將圖像從左移到中心,暫停一秒,然後將圖像移動到右側。 我試圖用ObjectAnimationUsingKeyFrames來實現它。wpf ObjectAnimationUsingKeyFrames設置左值

<BeginStoryboard> 
    <Storyboard Storyboard.TargetName="RoundNumberText" > 
    <ObjectAnimationUsingKeyFrames Duration="0:0:1" Storyboard.TargetProperty="Left"> 
     <DiscreteObjectKeyFrame Value="400" KeyTime="0:0:0.5"/> 
     <DiscreteObjectKeyFrame Value="1400" KeyTime="0:0:1.5"/> 
    </ObjectAnimationUsingKeyFrames> 
    </Storyboard> 
</BeginStoryboard> 

不知何故,我得到了TargetProperty上該對象不支持此屬性的錯誤消息。我也嘗試過保證金,但仍然給錯誤。 欣賞有人能幫忙。

回答

3

要設置校準值,你需要做的是這樣的:

<ObjectAnimationUsingKeyFrames Storyboard.TargetName="MyImage" 
           Storyboard.TargetProperty="HorizontalAlignment"> 

    <DiscreteObjectKeyFrame KeyTime="0:0:0"> 
     <DiscreteObjectKeyFrame.Value> 
      <HorizontalAlignment>Center</HorizontalAlignment> 
     </DiscreteObjectKeyFrame.Value> 
    </DiscreteObjectKeyFrame> 
</ObjectAnimationUsingKeyFrames> 

下面是我的例子中,當圖像出現在Label的作用:

<Grid> 
    <Grid.Triggers> 
     <EventTrigger SourceName="MoveToCenter" RoutedEvent="Button.Click"> 
      <BeginStoryboard> 
       <Storyboard> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Test" 
                Storyboard.TargetProperty="HorizontalAlignment"> 

         <DiscreteObjectKeyFrame KeyTime="0:0:0"> 
          <DiscreteObjectKeyFrame.Value> 
           <HorizontalAlignment>Center</HorizontalAlignment> 
          </DiscreteObjectKeyFrame.Value> 
         </DiscreteObjectKeyFrame> 
        </ObjectAnimationUsingKeyFrames> 

        <ObjectAnimationUsingKeyFrames BeginTime="0:0:1" 
                Storyboard.TargetName="Test" 
                Storyboard.TargetProperty="HorizontalAlignment"> 

         <DiscreteObjectKeyFrame KeyTime="0:0:0"> 
          <DiscreteObjectKeyFrame.Value> 
           <HorizontalAlignment>Right</HorizontalAlignment> 
          </DiscreteObjectKeyFrame.Value> 
         </DiscreteObjectKeyFrame> 
        </ObjectAnimationUsingKeyFrames> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
    </Grid.Triggers> 

    <Label x:Name="Test" Content="Test" Width="300" Height="200" Background="Aqua" HorizontalAlignment="Left" /> 

    <Button Name="MoveToCenter" Content="MoveToCenter" Width="120" Height="30" HorizontalAlignment="Right" VerticalAlignment="Bottom" /> 
</Grid> 
+0

我可以在上面的代碼中包含AccelerationRatio =「。2」或DecelerationRatio =「。8」? 因爲我想動畫它。 – Fire

+0

@ user2711132:你爲什麼不在你的關於'AccelerationRatio'的問題中說?可能不是,[DiscreteObjectKeyFrame](http://msdn.microsoft.com/zh-cn/library/system.windows.media.animation.discreteobjectkeyframe.aspx)僅包含屬性「KeyTime」。據我所知,動畫對齊工作僅適用於'DiscreteObjectKeyFrame',但您可以爲'BeginTime'設置不同的值。 –

+0

如何使用'DoubleAnimation'? 但是第二個動畫會覆蓋第一個動畫,任何想法將其暫停在中間? – Fire