diff --git a/src/Avalonia.Controls/TransitioningContentControl.cs b/src/Avalonia.Controls/TransitioningContentControl.cs index 943ceaf27c..edc1b10d93 100644 --- a/src/Avalonia.Controls/TransitioningContentControl.cs +++ b/src/Avalonia.Controls/TransitioningContentControl.cs @@ -22,14 +22,9 @@ public class TransitioningContentControl : ContentControl /// Defines the property. /// public static readonly StyledProperty PageTransitionProperty = - AvaloniaProperty.Register(nameof(PageTransition)); - - [System.Diagnostics.CodeAnalysis.SuppressMessage("AvaloniaProperty", "AVP1012", - Justification = "Default property values shouldn't be set with SetCurrentValue.")] - public TransitioningContentControl() - { - PageTransition = new CrossFade(TimeSpan.FromMilliseconds(125)); - } + AvaloniaProperty.Register( + nameof(PageTransition), + defaultValue: new ImmutableCrossFade(TimeSpan.FromMilliseconds(125))); /// /// Gets or sets the animation played when content appears and disappears. @@ -103,4 +98,16 @@ public class TransitioningContentControl : ContentControl InvalidateArrange(); } } + + private class ImmutableCrossFade : IPageTransition + { + private readonly CrossFade _inner; + + public ImmutableCrossFade(TimeSpan duration) => _inner = new CrossFade(duration); + + public Task Start(Visual? from, Visual? to, bool forward, CancellationToken cancellationToken) + { + return _inner.Start(from, to, cancellationToken); + } + } }