2012-04-02 55 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