diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation.sln b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation.sln
new file mode 100644
index 000000000..ad94cb26c
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation.sln
@@ -0,0 +1,26 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.8.0.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AnimationCancellation", "AnimationCancellation\AnimationCancellation.csproj", "{4AE8913C-E1C9-4E9E-B410-3C034ABE6EFB}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {4AE8913C-E1C9-4E9E-B410-3C034ABE6EFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4AE8913C-E1C9-4E9E-B410-3C034ABE6EFB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4AE8913C-E1C9-4E9E-B410-3C034ABE6EFB}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+ {4AE8913C-E1C9-4E9E-B410-3C034ABE6EFB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4AE8913C-E1C9-4E9E-B410-3C034ABE6EFB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4AE8913C-E1C9-4E9E-B410-3C034ABE6EFB}.Release|Any CPU.Deploy.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {DCD6A0DD-E16D-4518-9EAF-E3DD9CB9A645}
+ EndGlobalSection
+EndGlobal
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/AnimationCancellation.csproj b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/AnimationCancellation.csproj
new file mode 100644
index 000000000..2ce7f8a69
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/AnimationCancellation.csproj
@@ -0,0 +1,59 @@
+
+
+
+ net11.0-android;net11.0-ios;net11.0-maccatalyst
+ $(TargetFrameworks);net11.0-windows10.0.19041.0
+
+ Exe
+ AnimationCancellation
+ true
+ true
+ enable
+ enable
+
+ true
+
+
+ AnimationCancellation
+
+
+ com.companyname.animationcancellation
+
+
+ 1.0
+ 1
+
+ None
+
+ 15.0
+ 17.0
+ 24.0
+ 10.0.17763.0
+ 10.0.17763.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/App.xaml b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/App.xaml
new file mode 100644
index 000000000..e26f6f210
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/App.xaml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/App.xaml.cs b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/App.xaml.cs
new file mode 100644
index 000000000..bc13347f2
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/App.xaml.cs
@@ -0,0 +1,17 @@
+namespace AnimationCancellation;
+
+public partial class App : Application
+{
+ public App()
+ {
+ InitializeComponent();
+ }
+
+ protected override Window CreateWindow(IActivationState? activationState)
+ {
+ return new Window(new MainPage())
+ {
+ Title = "Animation Cancellation - .NET MAUI 11"
+ };
+ }
+}
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/GlobalUsings.cs b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/GlobalUsings.cs
new file mode 100644
index 000000000..e78d112ed
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/GlobalUsings.cs
@@ -0,0 +1,3 @@
+global using Microsoft.Maui.Controls;
+global using Microsoft.Maui.Controls.Xaml;
+global using Microsoft.Maui.Controls.Shapes;
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/MainPage.xaml b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/MainPage.xaml
new file mode 100644
index 000000000..48fce7bbb
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/MainPage.xaml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/MainPage.xaml.cs b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/MainPage.xaml.cs
new file mode 100644
index 000000000..c5665c517
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/MainPage.xaml.cs
@@ -0,0 +1,47 @@
+namespace AnimationCancellation;
+
+public partial class MainPage : ContentPage
+{
+ CancellationTokenSource? _cts;
+
+ public MainPage()
+ {
+ InitializeComponent();
+ }
+
+ //
+ async void OnFadeClicked(object? sender, EventArgs e)
+ {
+ _cts?.Cancel();
+ _cts = new CancellationTokenSource();
+
+ FadeButton.IsEnabled = false;
+ CancelButton.IsEnabled = true;
+ StatusLabel.Text = "Fading...";
+
+ // FadeToAsync returns Task: true means the animation was
+ // canceled, false means it ran to completion. The method does not
+ // throw on cancellation.
+ bool canceled = await LogoImage.FadeToAsync(0, 5000, Easing.SinIn, _cts.Token);
+
+ StatusLabel.Text = canceled
+ ? $"Canceled at opacity {LogoImage.Opacity:F2}."
+ : "Faded out.";
+
+ FadeButton.IsEnabled = true;
+ CancelButton.IsEnabled = false;
+ }
+
+ void OnCancelClicked(object? sender, EventArgs e)
+ {
+ _cts?.Cancel();
+ }
+ //
+
+ void OnResetClicked(object? sender, EventArgs e)
+ {
+ _cts?.Cancel();
+ LogoImage.Opacity = 1;
+ StatusLabel.Text = "Ready.";
+ }
+}
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/MauiProgram.cs b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/MauiProgram.cs
new file mode 100644
index 000000000..6764c71e5
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/MauiProgram.cs
@@ -0,0 +1,24 @@
+using Microsoft.Extensions.Logging;
+
+namespace AnimationCancellation;
+
+public static class MauiProgram
+{
+ public static MauiApp CreateMauiApp()
+ {
+ var builder = MauiApp.CreateBuilder();
+ builder
+ .UseMauiApp()
+ .ConfigureFonts(fonts =>
+ {
+ fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
+ fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
+ });
+
+#if DEBUG
+ builder.Logging.AddDebug();
+#endif
+
+ return builder.Build();
+ }
+}
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/Android/AndroidManifest.xml b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/Android/AndroidManifest.xml
new file mode 100644
index 000000000..e44369870
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/Android/AndroidManifest.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/Android/MainActivity.cs b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/Android/MainActivity.cs
new file mode 100644
index 000000000..6ea2d6380
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/Android/MainActivity.cs
@@ -0,0 +1,11 @@
+using Android.App;
+using Android.Content.PM;
+using Android.OS;
+
+namespace AnimationCancellation
+{
+ [Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, LaunchMode = LaunchMode.SingleTop, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
+ public class MainActivity : MauiAppCompatActivity
+ {
+ }
+}
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/Android/MainApplication.cs b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/Android/MainApplication.cs
new file mode 100644
index 000000000..f59e92a0e
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/Android/MainApplication.cs
@@ -0,0 +1,16 @@
+using Android.App;
+using Android.Runtime;
+
+namespace AnimationCancellation
+{
+ [Application]
+ public class MainApplication : MauiApplication
+ {
+ public MainApplication(IntPtr handle, JniHandleOwnership ownership)
+ : base(handle, ownership)
+ {
+ }
+
+ protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
+ }
+}
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/Android/Resources/values/colors.xml b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/Android/Resources/values/colors.xml
new file mode 100644
index 000000000..fbaa64a5a
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/Android/Resources/values/colors.xml
@@ -0,0 +1,6 @@
+
+
+ #512BD4
+ #2B0B98
+ #2B0B98
+
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/MacCatalyst/AppDelegate.cs b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/MacCatalyst/AppDelegate.cs
new file mode 100644
index 000000000..13020c5bc
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/MacCatalyst/AppDelegate.cs
@@ -0,0 +1,10 @@
+using Foundation;
+
+namespace AnimationCancellation
+{
+ [Register("AppDelegate")]
+ public class AppDelegate : MauiUIApplicationDelegate
+ {
+ protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
+ }
+}
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/MacCatalyst/Entitlements.plist b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/MacCatalyst/Entitlements.plist
new file mode 100644
index 000000000..49bfebf36
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/MacCatalyst/Entitlements.plist
@@ -0,0 +1,10 @@
+
+
+
+
+ com.apple.security.app-sandbox
+
+ com.apple.security.network.client
+
+
+
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/MacCatalyst/Info.plist b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/MacCatalyst/Info.plist
new file mode 100644
index 000000000..79a863bb8
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/MacCatalyst/Info.plist
@@ -0,0 +1,29 @@
+
+
+
+
+ UIDeviceFamily
+
+ 2
+
+ UIRequiredDeviceCapabilities
+
+ arm64
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ XSAppIconAssets
+ Assets.xcassets/appicon.appiconset
+
+
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/MacCatalyst/Program.cs b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/MacCatalyst/Program.cs
new file mode 100644
index 000000000..b872e746c
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/MacCatalyst/Program.cs
@@ -0,0 +1,13 @@
+using ObjCRuntime;
+using UIKit;
+
+namespace AnimationCancellation
+{
+ public class Program
+ {
+ static void Main(string[] args)
+ {
+ UIApplication.Main(args, null, typeof(AppDelegate));
+ }
+ }
+}
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/Windows/App.xaml b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/Windows/App.xaml
new file mode 100644
index 000000000..d3f286b5a
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/Windows/App.xaml
@@ -0,0 +1,8 @@
+
+
+
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/Windows/App.xaml.cs b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/Windows/App.xaml.cs
new file mode 100644
index 000000000..b9be8adaf
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/Windows/App.xaml.cs
@@ -0,0 +1,24 @@
+using Microsoft.UI.Xaml;
+
+// To learn more about WinUI, the WinUI project structure,
+// and more about our project templates, see: http://aka.ms/winui-project-info.
+
+namespace AnimationCancellation.WinUI;
+
+///
+/// Provides application-specific behavior to supplement the default Application class.
+///
+public partial class App : MauiWinUIApplication
+{
+ ///
+ /// Initializes the singleton application object. This is the first line of authored code
+ /// executed, and as such is the logical equivalent of main() or WinMain().
+ ///
+ public App()
+ {
+ this.InitializeComponent();
+ }
+
+ protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
+}
+
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/Windows/Package.appxmanifest b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/Windows/Package.appxmanifest
new file mode 100644
index 000000000..2bcb11edf
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/Windows/Package.appxmanifest
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+ $placeholder$
+ User Name
+ $placeholder$.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/Windows/app.manifest b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/Windows/app.manifest
new file mode 100644
index 000000000..a9848fa26
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/Windows/app.manifest
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+ true/PM
+ PerMonitorV2, PerMonitor
+
+
+
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/iOS/AppDelegate.cs b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/iOS/AppDelegate.cs
new file mode 100644
index 000000000..13020c5bc
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/iOS/AppDelegate.cs
@@ -0,0 +1,10 @@
+using Foundation;
+
+namespace AnimationCancellation
+{
+ [Register("AppDelegate")]
+ public class AppDelegate : MauiUIApplicationDelegate
+ {
+ protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
+ }
+}
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/iOS/Info.plist b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/iOS/Info.plist
new file mode 100644
index 000000000..0004a4fde
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/iOS/Info.plist
@@ -0,0 +1,32 @@
+
+
+
+
+ LSRequiresIPhoneOS
+
+ UIDeviceFamily
+
+ 1
+ 2
+
+ UIRequiredDeviceCapabilities
+
+ arm64
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ XSAppIconAssets
+ Assets.xcassets/appicon.appiconset
+
+
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/iOS/Program.cs b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/iOS/Program.cs
new file mode 100644
index 000000000..b872e746c
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/iOS/Program.cs
@@ -0,0 +1,13 @@
+using ObjCRuntime;
+using UIKit;
+
+namespace AnimationCancellation
+{
+ public class Program
+ {
+ static void Main(string[] args)
+ {
+ UIApplication.Main(args, null, typeof(AppDelegate));
+ }
+ }
+}
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/iOS/Resources/PrivacyInfo.xcprivacy b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/iOS/Resources/PrivacyInfo.xcprivacy
new file mode 100644
index 000000000..24ab3b433
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Platforms/iOS/Resources/PrivacyInfo.xcprivacy
@@ -0,0 +1,51 @@
+
+
+
+
+
+ NSPrivacyAccessedAPITypes
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategoryFileTimestamp
+ NSPrivacyAccessedAPITypeReasons
+
+ C617.1
+
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategorySystemBootTime
+ NSPrivacyAccessedAPITypeReasons
+
+ 35F9.1
+
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategoryDiskSpace
+ NSPrivacyAccessedAPITypeReasons
+
+ E174.1
+
+
+
+
+
+
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Resources/AppIcon/appicon.svg b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Resources/AppIcon/appicon.svg
new file mode 100644
index 000000000..9d63b6513
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Resources/AppIcon/appicon.svg
@@ -0,0 +1,4 @@
+
+
\ No newline at end of file
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Resources/AppIcon/appiconfg.svg b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Resources/AppIcon/appiconfg.svg
new file mode 100644
index 000000000..21dfb25f1
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Resources/AppIcon/appiconfg.svg
@@ -0,0 +1,8 @@
+
+
+
\ No newline at end of file
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Resources/Fonts/OpenSans-Regular.ttf b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Resources/Fonts/OpenSans-Regular.ttf
new file mode 100644
index 000000000..33b3e0d97
Binary files /dev/null and b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Resources/Fonts/OpenSans-Regular.ttf differ
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Resources/Fonts/OpenSans-Semibold.ttf b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Resources/Fonts/OpenSans-Semibold.ttf
new file mode 100644
index 000000000..a1f85711f
Binary files /dev/null and b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Resources/Fonts/OpenSans-Semibold.ttf differ
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Resources/Images/dotnet_bot.png b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Resources/Images/dotnet_bot.png
new file mode 100644
index 000000000..1d1b981ee
Binary files /dev/null and b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Resources/Images/dotnet_bot.png differ
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Resources/Splash/splash.svg b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Resources/Splash/splash.svg
new file mode 100644
index 000000000..21dfb25f1
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Resources/Splash/splash.svg
@@ -0,0 +1,8 @@
+
+
+
\ No newline at end of file
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Resources/Styles/Colors.xaml b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Resources/Styles/Colors.xaml
new file mode 100644
index 000000000..30307a5dd
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Resources/Styles/Colors.xaml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+ #512BD4
+ #ac99ea
+ #242424
+ #DFD8F7
+ #9880e5
+ #2B0B98
+
+ White
+ Black
+ #D600AA
+ #190649
+ #1f1f1f
+
+ #E1E1E1
+ #C8C8C8
+ #ACACAC
+ #919191
+ #6E6E6E
+ #404040
+ #212121
+ #141414
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Resources/Styles/Styles.xaml b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Resources/Styles/Styles.xaml
new file mode 100644
index 000000000..86f574d8c
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/AnimationCancellation/Resources/Styles/Styles.xaml
@@ -0,0 +1,451 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/11.0/UserInterface/Animation/AnimationCancellation/README.md b/11.0/UserInterface/Animation/AnimationCancellation/README.md
new file mode 100644
index 000000000..274d3c3c4
--- /dev/null
+++ b/11.0/UserInterface/Animation/AnimationCancellation/README.md
@@ -0,0 +1,48 @@
+---
+name: .NET MAUI - Animation cancellation
+description: "Demonstrates the new CancellationToken support on ViewExtensions animation methods in .NET MAUI 11."
+page_type: sample
+languages:
+- csharp
+- xaml
+products:
+- dotnet-maui
+urlFragment: animation-cancellation
+---
+# Animation cancellation
+
+This sample demonstrates the new `CancellationToken` overloads on the `ViewExtensions` animation methods introduced in .NET MAUI 11 ([dotnet/maui#33372](https://github.com/dotnet/maui/pull/33372)).
+
+The async animation extensions — `FadeToAsync`, `TranslateToAsync`, `ScaleToAsync`, `RotateToAsync`, and friends — now accept a `CancellationToken`. They return `Task`: when the token fires, the in-flight animation aborts and the awaited result is `true` (versus `false` when the animation runs to completion). No exception is thrown on cancellation, so the call site simply checks the bool.
+
+The non-token-based methods such as `FadeTo` are now marked `[Obsolete]` in favour of the new async overloads.
+
+## Features demonstrated
+
+- `Image.FadeToAsync(0, 5000, Easing.SinIn, token)` driven by a `CancellationTokenSource`.
+- A Cancel button that calls `_cts.Cancel()` to abort the running animation.
+- Inspecting the `Task` result to distinguish a cancellation from a natural finish.
+
+## Project structure
+
+| File | Purpose |
+|------|---------|
+| `MainPage.xaml` | UI with Image + Fade / Cancel / Reset buttons |
+| `MainPage.xaml.cs` | Cancellation logic |
+
+## Prerequisites
+
+- .NET 11 Preview 5 or later
+- .NET MAUI workload (`dotnet workload install maui`)
+
+## Running the sample
+
+```bash
+dotnet build -t:Run -f net11.0-maccatalyst
+```
+
+## Try this
+
+1. Tap **Fade out (5s)** to start a long, slow fade.
+2. Tap **Cancel** before the fade finishes — the animation stops where it is and the status label reports the cancelled opacity.
+3. Tap **Reset** to restore opacity and try again.