2012-04-02 2 views
0

Я получил это в моем XAML:Почему не работает анимация вращения серебристого телефона Windows?

  <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(); 
    } 

When Я нажимаю на свою кнопку, я получаю ошибку: Невозможно разрешить TargetProperty Angle на указанном объекте.

Но я понятия не имею, что я должен использовать, кроме угла.

У меня есть этот другой кусок кода, который работает отлично:

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

1

Ваша проблема с неправильным использованием "TargetProperty". Кнопка не имеет свойства Angle, вы должны использовать ее для 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> 

С уважением, Roman.

+0

Это один не совсем работа, но ваше объяснение было полезно. Я не уверен, как/где я должен найти, какие значения приемлемы в TargetProperty, но в моем случае (UIElement.RenderTransform). (RotateTransform.Angle) был тем, который работал. – dtc

+0

Возможно, это зависит от платформы, мой пример работает для версии WP 7.1, я не пробовал ее для 7.0 –

+0

Это зависит от того, что находится внутри кнопки «Button». По умолчанию 'Blend' пишет' CompositeTransform', но @dtc имеет 'RotateTransform' внутри – Ku6opr