2016-05-25 2 views
0

Я хотел бы создать динамическую трансляцию Y анимаций для своих гридов, но я не могу найти, как это сделать в UWP программно.Как я могу создать трансляционную анимацию трансляционной программы программно UWP?

У меня есть этот код, но он говорит

информацию WinRT: Не удается разрешить TargetProperty TranslateY на указанном объекте.

Я попытался установить имя свойства для Y, но он говорит:

информацию WinRT: Не удается разрешить TargetProperty Y на указанном объекте.

Пример:

private void CreateStoryBoardAnimation(Grid myGrid) 
{ 
    myGrid.RenderTransform = new CompositeTransform(); 

    Storyboard storyboard = new Storyboard(); 

    DoubleAnimation translateYAnimation = new DoubleAnimation(); 
    translateYAnimation.From = -500; 
    translateYAnimation.To = 1; 
    translateYAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(500)); 

    Storyboard.SetTarget(translateYAnimation, myGrid); 
    Storyboard.SetTargetProperty(translateYAnimation, "TranslateY"); 

    storyboard.Children.Add(translateYAnimation); 

    storyboard.Begin(); 
} 

Я также попытался использовать класс TranslateTransform ... Но я не понимаю, как я мог бы использовать его.

Storyboard.SetTargetProperty принимает только строку в UWP.

Я хотел бы переместить сетку на экран с анимацией. Я знаю, как сделать анимацию раскадровки в blend, но это не вариант в этом случае.

ответ

2

Ваш код абсолютно верно только использовать эту строку:

Storyboard.SetTargetProperty(translateYAnimation, "(UIElement.RenderTransform).(CompositeTransform.TranslateY)"); 

вместо

Storyboard.SetTargetProperty(translateYAnimation, "TranslateY"); 

Вот и все. Отличный день :)

1

Я хотел бы предложить вам определить анимации в XAML и обновить все необходимые параметры в коде:

<Grid> 
    <Grid.Resources> 
     <Storyboard x:Name="SlidingAnimatoin"> 
      <DoubleAnimation Storyboard.TargetName="TranslateTransform" 
          Storyboard.TargetProperty="Y" 
          From="100" 
          To="0" 
          Duration="0:0:0.5"> 
      </DoubleAnimation> 
     </Storyboard> 
    </Grid.Resources> 
    <Grid.RenderTransform> 
     <TranslateTransform x:Name="TranslateTransform"/> 
    </Grid.RenderTransform> 
</Grid> 

В коде вы можете получить доступ к раскадровке по имени SlidingAnimatoin и обновлять какие-либо свойства даже в DoubleAnimation.

Смежные вопросы