Как создать и применить Spring Animation к элементу управления UWP? - PullRequest
1 голос
/ 12 марта 2019

Я намерен добавить горизонтальное смещение с колебательным эффектом на сетке (LoginBody) при загрузке. После исследования я думаю, что Spring Animation - правильная вещь для использования. Код, который я получил из учебного пособия MS до сих пор, явно недействителен. Для начала я не знаком с добавлением CompositionObject в визуальное дерево. Также я не уверен, как установить «Offset.X» в качестве целевого свойства. Любой совет будет принят во внимание.

  private void LoginBody_Loaded(object sender, RoutedEventArgs e)
    {
        Compositor _compositor = new Compositor();
        SpringScalarNaturalMotionAnimation _springAnimation =_compositor.CreateSpringScalarAnimation();
        _springAnimation.DampingRatio = 0.75f;
        _springAnimation.Period = TimeSpan.FromSeconds(0.5);
        _springAnimation.InitialValueExpressions["FinalValue"] = "this.StartingValue + 250";

        LoginBody.StartAnimation(_springAnimation);
    }

1 Ответ

1 голос
/ 13 марта 2019

Вы не создаете экземпляр нового Compositor, это глобальный объект, на который вы просто хотите сослаться.Самый простой способ:

Compositor _compositor = Window.Current.Compositor;

Вы не упоминаете, что такое «LoginBody» или откуда он появился.Если это элемент UIElement, который был добавлен в файл XAML, то он уже является частью дерева визуалов.Или, если 'LoginBody' - это тип Visual, который вы получили с помощью:

Visual LoginBody = ElementCompositionPreview.GetElementChildVisual(myUIElement);

Это тоже уже является частью дерева визуалов (предполагается, что myUIElement - это).Однако, если 'LoginBody' - это, например, недавно созданный SpriteVisual или ContainerVisual, вам нужно добавить его в дерево визуалов следующим образом:

ElementCompositionPreview.SetElementChildVisual(myGrid, LoginBody);

Я предполагаю, что простое исправление ссылки на Compositor поставит васна правильном пути.

...