Goldie.MauiPlugins.PageResolver 2.0.1

dotnet add package Goldie.MauiPlugins.PageResolver --version 2.0.1
NuGet\Install-Package Goldie.MauiPlugins.PageResolver -Version 2.0.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Goldie.MauiPlugins.PageResolver" Version="2.0.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Goldie.MauiPlugins.PageResolver --version 2.0.1
#r "nuget: Goldie.MauiPlugins.PageResolver, 2.0.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Goldie.MauiPlugins.PageResolver as a Cake Addin
#addin nuget:?package=Goldie.MauiPlugins.PageResolver&version=2.0.1

// Install Goldie.MauiPlugins.PageResolver as a Cake Tool
#tool nuget:?package=Goldie.MauiPlugins.PageResolver&version=2.0.1

.NET MAUI PageResolver

A simple and lightweight page resolver for use in .NET MAUI projects.

If you want a simple page resolver with DI without using a full MVVM framework (or if you want to use MVU), this package will let you navigate to fully resolved pages, with view models and dependencies, by calling:

await Navigation.PushAsync<MyPage>();

Advanced features

Additional features supported by PageReolver:

  • Paramaterised navigation - pass page parameters
await Navigation.PushAsync<MyPage>(myPageParam1, "bob", 4);
  • Paramaterised navigation - pass ViewModel parameters (.NET 8 version only)
await Navigation.PushAsync<MyPage>(myViewModelParam1, "bob", 4);
  • Source generator - automatically register dependencies in IServiceCollection with generated code (.NET 8 version only)
using Maui.Plugins.PageResolver;
using DemoProject;
using DemoProject.Pages;
using DemoProject.ViewModels;
using DemoProject.Services;
// ---------------
// <auto-generated>
//   Generated by the MauiPageResolver Auto-registration module.
//   https://github.com/matt-goldman/Maui.Plugins.PageResolver
// </auto-generated>
// ---------------

namespace DemoProject;

public static class PageResolverExtensions
{

    public static MauiAppBuilder UseAutodependencies(this MauiAppBuilder builder)
    {
         var ViewModelMappings = new Dictionary<Type, Type>();

         // pages
         builder.Services.AddTransient<MainPage>();


         // ViewModels
         builder.Services.AddTransient<MainViewModel>();


         // Services
         builder.Services.AddSingleton<IDefaultScopedService, DefaultScopedService>();
         builder.Services.AddTransient<ICustomScopedService, CustomScopedService>();


         // ViewModel to Page mappings
         ViewModelMappings.Add(typeof(MainPage), typeof(MainViewModel));


         // Initialisation
         builder.Services.UsePageResolver(ViewModelMappings);
         return builder;
    }
}
  • Lifetime attributes - override convention-based service lifetimes (singleton for services, transient for pages and ViewModels) in the source generator (.NET 8 version only)
[Transient]
public class CustomScopedService : ICustomScopedService
{
[...]

Getting Started

Check out the full instructions in the wiki on using PageResolver

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net8.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.0.1 1,659 11/18/2023
2.0.0 139 11/13/2023
2.0.0-preview1 72 10/13/2023
1.1.1 3,350 1/14/2023
1.1.0 249 1/14/2023
1.0.7 937 8/13/2022
1.0.6 448 6/26/2022
1.0.5 333 3/8/2022
1.0.5-preview1 109 3/5/2022
1.0.4 130 2/26/2022
1.0.3 110 2/26/2022
1.0.2 138 2/14/2022
1.0.1 234 10/23/2021
1.0.0 225 6/17/2021
1.0.0-build 125 8/13/2022