![]() |
VOOZH | about |
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
<PackageReference Include="DSoft.System.Mvvm.UI.MAUI" Version="3.6.2606.131" />
<PackageVersion Include="DSoft.System.Mvvm.UI.MAUI" Version="3.6.2606.131" />Directory.Packages.props
<PackageReference Include="DSoft.System.Mvvm.UI.MAUI" />Project file
paket add DSoft.System.Mvvm.UI.MAUI --version 3.6.2606.131
#r "nuget: DSoft.System.Mvvm.UI.MAUI, 3.6.2606.131"
#:package DSoft.System.Mvvm.UI.MAUI@3.6.2606.131
#addin nuget:?package=DSoft.System.Mvvm.UI.MAUI&version=3.6.2606.131Install as a Cake Addin
#tool nuget:?package=DSoft.System.Mvvm.UI.MAUI&version=3.6.2606.131Install as a Cake Tool
Provides MAUI platform implementations for DSoft.System.Mvvm.UI
IPlatformCoreUIProviderThe UI static class provides four methods as defined in the IPlatformCoreUIProvider interface.
ShowAlert(string title, string message)
ShowConfirmation(string title, string message)
InvokeOnUIThread(Action)
InvokeOnUIThreadAsync(Action)
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();
}
}
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");
}
}
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();
}
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 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. |
This package is not used by any NuGet packages.
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.