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);
+ }
+ }
}