Skip to content

Commit

Permalink
Fixed implicit animations reset by setting null
Browse files Browse the repository at this point in the history
  • Loading branch information
Sergio0694 committed Sep 24, 2021
1 parent d775ea4 commit f84a747
Showing 1 changed file with 42 additions and 24 deletions.
66 changes: 42 additions & 24 deletions Microsoft.Toolkit.Uwp.UI.Animations/Implicit.cs
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public static ImplicitAnimationSet GetShowAnimations(UIElement element)

if (collection is null)
{
element.SetValue(ShowAnimationsProperty, collection = new());
element.SetValue(ShowAnimationsProperty, collection = new ImplicitAnimationSet());
}

return collection;
Expand All @@ -80,7 +80,7 @@ public static ImplicitAnimationSet GetHideAnimations(UIElement element)

if (collection is null)
{
element.SetValue(HideAnimationsProperty, collection = new());
element.SetValue(HideAnimationsProperty, collection = new ImplicitAnimationSet());
}

return collection;
Expand All @@ -107,7 +107,7 @@ public static ImplicitAnimationSet GetAnimations(UIElement element)

if (collection is null)
{
element.SetValue(AnimationsProperty, collection = new());
element.SetValue(AnimationsProperty, collection = new ImplicitAnimationSet());
}

return collection;
Expand Down Expand Up @@ -145,15 +145,21 @@ static void OnAnimationsChanged(object sender, EventArgs e)
oldCollection.AnimationsChanged -= OnAnimationsChanged;
}

if (d is UIElement element &&
e.NewValue is ImplicitAnimationSet collection)
if (d is UIElement element)
{
collection.ParentReference = new(element);
collection.AnimationsChanged -= OnAnimationsChanged;
collection.AnimationsChanged += OnAnimationsChanged;
if (e.NewValue is ImplicitAnimationSet collection)
{
collection.ParentReference = new(element);
collection.AnimationsChanged -= OnAnimationsChanged;
collection.AnimationsChanged += OnAnimationsChanged;

ElementCompositionPreview.SetIsTranslationEnabled(element, true);
ElementCompositionPreview.SetImplicitShowAnimation(element, collection.GetCompositionAnimationGroup(element));
ElementCompositionPreview.SetIsTranslationEnabled(element, true);
ElementCompositionPreview.SetImplicitShowAnimation(element, collection.GetCompositionAnimationGroup(element));
}
else
{
ElementCompositionPreview.SetImplicitShowAnimation(element, null);
}
}
}

Expand All @@ -179,15 +185,21 @@ static void OnAnimationsChanged(object sender, EventArgs e)
oldCollection.AnimationsChanged -= OnAnimationsChanged;
}

if (d is UIElement element &&
e.NewValue is ImplicitAnimationSet collection)
if (d is UIElement element)
{
collection.ParentReference = new(element);
collection.AnimationsChanged -= OnAnimationsChanged;
collection.AnimationsChanged += OnAnimationsChanged;
if (e.NewValue is ImplicitAnimationSet collection)
{
collection.ParentReference = new(element);
collection.AnimationsChanged -= OnAnimationsChanged;
collection.AnimationsChanged += OnAnimationsChanged;

ElementCompositionPreview.SetIsTranslationEnabled(element, true);
ElementCompositionPreview.SetImplicitHideAnimation(element, collection.GetCompositionAnimationGroup(element));
ElementCompositionPreview.SetIsTranslationEnabled(element, true);
ElementCompositionPreview.SetImplicitHideAnimation(element, collection.GetCompositionAnimationGroup(element));
}
else
{
ElementCompositionPreview.SetImplicitHideAnimation(element, null);
}
}
}

Expand All @@ -213,15 +225,21 @@ static void OnAnimationsChanged(object sender, EventArgs e)
oldCollection.AnimationsChanged -= OnAnimationsChanged;
}

if (d is UIElement element &&
e.NewValue is ImplicitAnimationSet collection)
if (d is UIElement element)
{
collection.ParentReference = new(element);
collection.AnimationsChanged -= OnAnimationsChanged;
collection.AnimationsChanged += OnAnimationsChanged;
if (e.NewValue is ImplicitAnimationSet collection)
{
collection.ParentReference = new(element);
collection.AnimationsChanged -= OnAnimationsChanged;
collection.AnimationsChanged += OnAnimationsChanged;

ElementCompositionPreview.SetIsTranslationEnabled(element, true);
ElementCompositionPreview.GetElementVisual(element).ImplicitAnimations = collection.GetImplicitAnimationCollection(element);
ElementCompositionPreview.SetIsTranslationEnabled(element, true);
ElementCompositionPreview.GetElementVisual(element).ImplicitAnimations = collection.GetImplicitAnimationCollection(element);
}
else
{
ElementCompositionPreview.GetElementVisual(element).ImplicitAnimations = null;
}
}
}
}
Expand Down

0 comments on commit f84a747

Please sign in to comment.