2012-04-02 56 views
0

我在我的XAML得到這個:爲什麼我的windows phone silverlight旋轉動畫不工作?

  <Grid.Resources> 
       <Storyboard x:Name="Storyboard_Animation"> 
        <DoubleAnimation 
          Storyboard.TargetName="button_Submit" 
          Storyboard.TargetProperty="Angle" 
          From="0" 
          To="360" 
          Duration="0:0:1"></DoubleAnimation> 
       </Storyboard> 
      </Grid.Resources> 

我有相同的網格按鈕:

  <Button Grid.Row="0" Grid.Column="1" Content="Submit" Margin="0" Name="button_Submit" Click="button_Submit_Click"> 
       <Button.Template> 
        <ControlTemplate> 
         <Image Source="Images/buttonImage.png"></Image> 
        </ControlTemplate> 
       </Button.Template> 
       <Button.RenderTransform> 
        <RotateTransform></RotateTransform> 
       </Button.RenderTransform> 
      </Button> 

我在點擊方法有這樣的:

private void button_Submit_Click(object sender, RoutedEventArgs e) 
    { 
     Storyboard_Animation.Begin(); 
    } 

當我點擊我的按鈕我收到錯誤: 無法解析指定對象上的TargetProperty角度。

但是,我不知道我應該使用除角度以外的其他東西。

我有這等一段代碼工作正常:

private void RotateStar() 
    { 
     button_Submit.RenderTransformOrigin = new Point(0.5, 0.5); 
     button_Submit.RenderTransform = new RotateTransform(); 
     DoubleAnimation da = new DoubleAnimation 
     { 
      From = 0, 
      To = 360, 
      Duration = TimeSpan.FromSeconds(0.3) 
     }; 
     Storyboard.SetTarget(da, button_Submit.RenderTransform); 
     Storyboard.SetTargetProperty(da, new PropertyPath(RotateTransform.AngleProperty)); 
     Storyboard sb = new Storyboard(); 
     sb.Children.Add(da); 
     sb.Begin(); 
    } 

我希望把故事板在XAML,而不是在代碼中。我需要在我的XAML版本中添加/更改哪些內容以便它像代碼版本一樣工作?

回答

1

試試這個:

<Grid.Resources> 
    <Storyboard x:Name="Storyboard_Animation"> 
     <DoubleAnimation 
      Storyboard.TargetName="button_Submit" 
      Storyboard.TargetProperty="(UIElement.RenderTransform).(RotateTransform.Angle)" 
      From="0" 
      To="360" 
      Duration="0:0:1"> 
     </DoubleAnimation> 
    </Storyboard> 
</Grid.Resources> 
+0

(UIElement.RenderTransform)。(RotateTransform.Angle)是我需要的。謝謝。 – dtc 2012-04-02 17:15:48

1

你的問題是在使用「TargetProperty」不正確。按鈕沒有角度屬性,您應該將其用於RenderTransform。

這樣的:

<Storyboard x:Name="Storyboard_Animation"> 
           <DoubleAnimation Duration="0:0:1" To="-180.221" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.Rotation)" Storyboard.TargetName="button" d:IsOptimized="True"/> 
    </Storyboard> 

問候, 羅馬。

+0

這其中也不太工作,但你的解釋是有益的。我不確定在TargetProperty中如何/在哪裏找到可接受的值,但在我的情況下(UIElement.RenderTransform)(RotateTransform.Angle)是有效的。 – dtc 2012-04-02 17:15:32

+0

也許它取決於平臺,我的例子適用於WP 7.1版本,我沒有試用它7.0 – 2012-04-03 06:05:07

+0

它取決於'Button'中的內容。默認情況下,'Blend'寫入一個'CompositeTransform',但@dtc在' – Ku6opr 2012-04-03 07:03:10

相關問題