Артефакты при неявной анимации UWP

У меня проблема с моей неявной анимацией. Когда сетка идет вверх, все выглядит хорошо, но когда метод CloseButton_Click идет, а сетка выходит из строя, артефакты, подобные тем, что на изображении, Артефакты. Кто-нибудь знает как это исправить? Я буду благодарен за каждую идею.

Мой код выглядит так:

public sealed partial class AddTaskView : UserControl
{
    private Compositor _compositor;
    private Visual myWindow;
    private Vector3KeyFrameAnimation offsetAnimation;
    private ImplicitAnimationCollection implicitAnimation;
    public AddTaskView()
    {
        this.InitializeComponent();
        this.InitializeTransition();
    }

    private void InitializeTransition()
    {
        WindowGrid.Height = ((Frame)Window.Current.Content).ActualHeight;
        WindowGrid.Width = ((Frame)Window.Current.Content).ActualWidth;
        myWindow = ElementCompositionPreview.GetElementVisual(myWindowGrid);
        _compositor = myWindow.Compositor;
        myWindow.Size = new Vector2((float)((Frame)Window.Current.Content).ActualWidth
            , (float)((Frame)Window.Current.Content).ActualHeight);
    }

    private void ColorSlideTransitionCompleted(object sender, EventArgs e)
    {
    }

    private void UserControl_Loaded(object sender, RoutedEventArgs e)
    {
        myWindow.Size = new Vector2((float)((Frame)Window.Current.Content).ActualWidth
            , (float)((Frame)Window.Current.Content).ActualHeight);
        myWindow.Offset = new Vector3(0.0f, (float)WindowGrid.ActualHeight, 0.0f);
        offsetAnimation = _compositor.CreateVector3KeyFrameAnimation();
        offsetAnimation.Target = nameof(Visual.Offset);
        offsetAnimation.InsertExpressionKeyFrame(1.0f, "this.FinalValue");
        offsetAnimation.Duration = TimeSpan.FromMilliseconds(5000);


        implicitAnimation = _compositor.CreateImplicitAnimationCollection();
        implicitAnimation[nameof(Visual.Offset)] = offsetAnimation;
        myWindow.ImplicitAnimations = implicitAnimation;
        #region slide
        myWindow.Offset = new Vector3(0.0f, 0.0f, 0.0f);
        #endregion
    }


    private void CloseButton_Click(object sender, RoutedEventArgs e)
    {
        myWindow.Offset = new Vector3(0.0f, (float)((Frame)Window.Current.Content).ActualHeight, 0.0f);
    }
}

OffTopic: позже я хочу связать эту анимацию с GaussianBlurEffect. Возможно ли это сделать? У вас есть какие-нибудь советы для меня? Я тоже буду благодарен.

0 ответов

Другие вопросы по тегам