diff --git a/src/CommunityToolkit/Xamarin.CommunityToolkit/Extensions/Navigation/NavigationExtensions.uwp.cs b/src/CommunityToolkit/Xamarin.CommunityToolkit/Extensions/Navigation/NavigationExtensions.uwp.cs
index 12641f3dd..e9890ec31 100644
--- a/src/CommunityToolkit/Xamarin.CommunityToolkit/Extensions/Navigation/NavigationExtensions.uwp.cs
+++ b/src/CommunityToolkit/Xamarin.CommunityToolkit/Extensions/Navigation/NavigationExtensions.uwp.cs
@@ -1,7 +1,9 @@
-using System.Linq;
+using System;
+using System.Linq;
using System.Threading.Tasks;
using Xamarin.CommunityToolkit.UI.Views;
using Xamarin.Forms;
+using Xamarin.Forms.Internals;
using Xamarin.Forms.Platform.UWP;
namespace Xamarin.CommunityToolkit.Extensions
@@ -11,7 +13,7 @@ public static partial class NavigationExtensions
static void PlatformShowPopup(BasePopup popup)
{
popup.Parent = GetCurrentPage(Application.Current.MainPage);
- Platform.CreateRenderer(popup);
+ CreateRenderer(popup);
// https://github.com/xamarin/Xamarin.Forms/blob/0c95d0976cc089fe72476fb037851a64987de83c/Xamarin.Forms.Platform.iOS/PageExtensions.cs#L44
Page GetCurrentPage(Page currentPage)
@@ -38,5 +40,22 @@ Page GetCurrentPage(Page currentPage)
PlatformShowPopup(popup);
return popup.Result;
}
+
+ ///
+ /// ATTENTION: Create the Renderer for UWP Don't use the one Provided by Xamarin.Forms, Causes a crash in Native Compiled Code
+ /// 1. DefaultRenderer is PopupRenderer instead of DefaultRenderer()
+ /// 2. No Invalid Cast Exceptions in UWP Native when the Xamarin Forms Renderer Functions is used.
+ ///
+ /// Element for getting the renderer
+ // https://github.com/xamarin/Xamarin.Forms/blob/5.0.0/Xamarin.Forms.Platform.UAP/Platform.cs
+ static void CreateRenderer(VisualElement element)
+ {
+ if (element == null)
+ throw new ArgumentNullException(nameof(element));
+
+ var renderer = Registrar.Registered.GetHandlerForObject(element) ?? new PopupRenderer();
+
+ renderer.SetElement(element);
+ }
}
-}
\ No newline at end of file
+}