VOOZH about

URL: https://www.nuget.org/packages/DSoft.System.Mvvm.UI.MAUI

⇱ NuGet Gallery | DSoft.System.Mvvm.UI.MAUI 3.6.2606.131




👁 Image
DSoft.System.Mvvm.UI.MAUI 3.6.2606.131

dotnet add package DSoft.System.Mvvm.UI.MAUI --version 3.6.2606.131
 
 
NuGet\Install-Package DSoft.System.Mvvm.UI.MAUI -Version 3.6.2606.131
 
 
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="DSoft.System.Mvvm.UI.MAUI" Version="3.6.2606.131" />
 
 
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DSoft.System.Mvvm.UI.MAUI" Version="3.6.2606.131" />
 
Directory.Packages.props
<PackageReference Include="DSoft.System.Mvvm.UI.MAUI" />
 
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add DSoft.System.Mvvm.UI.MAUI --version 3.6.2606.131
 
 
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: DSoft.System.Mvvm.UI.MAUI, 3.6.2606.131"
 
 
#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.
#:package DSoft.System.Mvvm.UI.MAUI@3.6.2606.131
 
 
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=DSoft.System.Mvvm.UI.MAUI&version=3.6.2606.131
 
Install as a Cake Addin
#tool nuget:?package=DSoft.System.Mvvm.UI.MAUI&version=3.6.2606.131
 
Install as a Cake Tool
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

System.Mvvm.UI.MAUI

Provides MAUI platform implementations for DSoft.System.Mvvm.UI

Functionality

  • UI
    • Core UI functions for Showing Alerts and Confirmation Dialogs
    • UI Thread execution
    • Dependency injection support with IPlatformCoreUIProvider
    • .NET 10 MAUI (net10.0, Android, iOS, MacCatalyst and Windows 10.0.19041.0)

Using System.Mvvm.UI.MAUI

The UI static class provides four methods as defined in the IPlatformCoreUIProvider interface.

  • A central interface for calling some simple UI functions
    • ShowAlert(string title, string message)
      • Show an alert with a title and message using the platform implementation
    • ShowConfirmation(string title, string message)
      • Show a confirmation dialog and return the result using the platform implementation
    • InvokeOnUIThread(Action)
      • Execute the action on the UI thread using the platform implementation
    • InvokeOnUIThreadAsync(Action)
      • Execute the action on the UI thread asyncronously using the platform implementation

The standard UI functions can be called directly after adding the DSoft.Mvvm.UI package to your shared code

using System.Mvvm;
... 

var result = await UI.ShowConfirmationDialogAsync("Confirm this", "This is a platform specific confirmation message");

if (result)
 await UI.ShowAlertAsync("YAY!", "You confirmed that");

In the MAUI project that contains the App class(or other sub-class of Application), add the DSoft.System.Mvvm.UI.MAUI package.

Call the MvvmManager.Init method in the shared code, such as Application.OnStart

using System.Mvvm;
... 
public partial class App : Application
{
 protected override OnStart()
 {
 base.OnStart();

 MvvmManager.Init();
 }
}

Dependency Injection

Instead of using the static UI class you can use dependency injection to access the platform implementation of IPlatformCoreUIProvider using extensions for IServiceCollection provided by the platform specific packages.

After adding DSoft.System.Mvvm.UI.MAUI to the application project you can register the core UI implementations of IPlatformCoreUIProvider with the ServiceProvider during configuration of the services using the AddCoreUI extension method.

using System.Mvvm;
... 
public static class MauiProgram
{
	public static MauiApp CreateMauiApp()
	{
		var builder = MauiApp.CreateBuilder();
		builder
			.UseMauiApp<App>()
			.ConfigureFonts(fonts =>
			{
				fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
				fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
			});

 builder.Services.AddCore();

		return builder.Build();
	}
}

Once the core UI is registered you can use IPlatformCoreUIProvider with dependency injection in class constructors.

using System.Mvvm;
... 
public class SharedClassToDoThingsIn
{
 private readonly IPlatformCoreUIProvider _coreUIProvider;

 public SharedClassToDoThingsIn(IPlatformCoreUIProvider coreUIProvider)
 {
 _coreUIProvider = coreUIProvider;
 }

 public async Task SayHello()
 {
 await _coreUIProvider.ShowAlertAsync("Congrats", "You called the ICoreUIProvider instance");
 }
}

ISevicesCollection extensions

On other platforms, when configuring the services there is normally a ConfigureServices extension to make it easier to parse a delegate to configure the services. With MauiAppBuilder this is not available so we created MauiExtensions to add this functionality back in.

	public static MauiApp CreateMauiApp()
	{
		var builder = MauiApp.CreateBuilder();
		builder
			.UseMauiApp<App>()
			.ConfigureFonts(fonts =>
			{
				fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
				fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
			})
			.ConfigureServices(services =>
 {
 services.AddCoreUI();
 });

		return builder.Build();
	}

MauiHostProxy

MauiApp does not implement IHost and so it cannot be used directly with DSoft.System.Mvvm.Hosting. This makes it harder to access the IServiceProvider instance to retrieve the services. We've created MauiHostProxy to allow you to use MauiApp with DSoft.System.Mvvm.Hosting by providing a simple wrapper around it which does implement IHost.

You simply instatiate a new instance of MauiHostProxy with the output of MauiAppBuilder.Build and assigned it to ServiceHost.Host as usual.

 public static MauiApp CreateMauiApp()
 {
 var builder = MauiApp.CreateBuilder();
 builder
 .UseMauiApp<App>()
 .ConfigureFonts(fonts =>
 {
 fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
 fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
 })
 .ConfigureServices(ConfigureServices);

 var app = builder.Build();

 //configure the servicehost host
 ServiceHost.Host = new MauiHostProxy(app);

 return app;
 }

You can then retrieve the implementation directly from ServiceHost as before, theres not need to keep a refernce to MauiApp in your shared code.

using System.Mvvm;
... 

var _coreUIProvider = ServiceHost.GetRequiredService<IPlatformCoreUIProvider>();

await _coreUIProvider.ShowAlertAsync("Congrats", "You called the ICoreUIProvider instance");

IMAUIPlatformUIProvider

IMAUIPlatformUIProvider is a platform specific interface that the platform implementation of IPlatformCoreUIProvider implements. It provides access to some additonal MAUI properties such as the current Application.

Use can retrieve the implementation directly from the services provider or ServiceHost if you are using DSoft.System.Mvvm.Hosting

using System.Mvvm;
... 

var _formsUIProvider = ServiceHost.GetRequiredService<IMAUIPlatformUIProvider>();

var currentApp = _formsUIProvider.CurrentApplication;
Product Versions Compatible and additional computed target framework versions.
.NET net10.0 net10.0 is compatible.  net10.0-android net10.0-android was computed.  net10.0-android36.0 net10.0-android36.0 is compatible.  net10.0-browser net10.0-browser was computed.  net10.0-ios net10.0-ios was computed.  net10.0-ios26.0 net10.0-ios26.0 is compatible.  net10.0-maccatalyst net10.0-maccatalyst was computed.  net10.0-maccatalyst26.0 net10.0-maccatalyst26.0 is compatible.  net10.0-macos net10.0-macos was computed.  net10.0-tvos net10.0-tvos was computed.  net10.0-windows net10.0-windows was computed.  net10.0-windows10.0.19041 net10.0-windows10.0.19041 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
3.6.2606.131 89 6/13/2026
3.5.2604.111 184 4/11/2026
3.5.2511.161 401 11/16/2025
3.4.2511.61 226 11/6/2025
3.4.2506.231 299 6/23/2025
3.4.2411.191 310 11/19/2024
3.4.2406.251 321 6/25/2024
3.3.2405.241 221 5/24/2024
3.3.2405.21 272 5/5/2024
3.2.2301.91 447 1/9/2023
3.1.2208.151 465 8/15/2022

Updated to .NET 10 and latest packages. Removed .NET 8 and .NET 9 support. Performance improvements.