From 6a261b4c8db237c5d8253847569245b03b26a693 Mon Sep 17 00:00:00 2001 From: nativenolde Date: Mon, 23 Nov 2020 21:05:17 +0100 Subject: [PATCH] Non-generic register for navigation with view-model --- .../Ioc/IContainerRegistryExtensions.cs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/Forms/Prism.Forms/Ioc/IContainerRegistryExtensions.cs b/src/Forms/Prism.Forms/Ioc/IContainerRegistryExtensions.cs index bf2a14a7c4..bb3de11530 100644 --- a/src/Forms/Prism.Forms/Ioc/IContainerRegistryExtensions.cs +++ b/src/Forms/Prism.Forms/Ioc/IContainerRegistryExtensions.cs @@ -50,6 +50,18 @@ public static void RegisterForNavigation(this IContainerRegis containerRegistry.RegisterForNavigationWithViewModel(typeof(TView), name); } + /// + /// Registers a Page for navigation. + /// + /// The Type of Page to register + /// The Type of ViewModel to use as the BindingContext for the Page + /// The unique name to register with the Page + /// + public static void RegisterForNavigation(this IContainerRegistry containerRegistry, Type viewType, Type viewModelType, string name = null) + { + containerRegistry.RegisterForNavigationWithViewModel(viewType, viewModelType, name); + } + /// /// Registers a Page for navigation based on the current Device OS using a shared ViewModel /// @@ -175,11 +187,16 @@ public static void RegisterForNavigationOnIdiom(this IContain private static void RegisterForNavigationWithViewModel(this IContainerRegistry containerRegistry, Type viewType, string name) where TViewModel : class + { + containerRegistry.RegisterForNavigationWithViewModel(viewType, typeof(TViewModel), name); + } + + private static void RegisterForNavigationWithViewModel(this IContainerRegistry containerRegistry, Type viewType, Type viewModelType, string name) { if (string.IsNullOrWhiteSpace(name)) name = viewType.Name; - ViewModelLocationProvider.Register(viewType.ToString(), typeof(TViewModel)); + ViewModelLocationProvider.Register(viewType.ToString(), viewModelType); containerRegistry.RegisterForNavigation(viewType, name); }