diff --git a/src/Avalonia.Controls/TransitioningContentControl.cs b/src/Avalonia.Controls/TransitioningContentControl.cs
new file mode 100644
index 0000000000..d71fb2b90c
--- /dev/null
+++ b/src/Avalonia.Controls/TransitioningContentControl.cs
@@ -0,0 +1,70 @@
+using System;
+using System.Threading;
+using Avalonia.Animation;
+
+namespace Avalonia.Controls;
+
+public class TransitioningContentControl : ContentControl
+{
+ private CancellationTokenSource? _lastTransitionCts;
+
+ ///
+ /// Defines the property.
+ ///
+ public static readonly StyledProperty PageTransitionProperty =
+ AvaloniaProperty.Register(nameof(PageTransition),
+ new CrossFade(TimeSpan.FromSeconds(0.5)));
+
+
+ ///
+ /// Defines the property.
+ ///
+ public static readonly StyledProperty