VijayAnand.MauiToolkit
2.1.0-preview.5
Prefix Reserved
See the version list below for details.
dotnet add package VijayAnand.MauiToolkit --version 2.1.0-preview.5
NuGet\Install-Package VijayAnand.MauiToolkit -Version 2.1.0-preview.5
<PackageReference Include="VijayAnand.MauiToolkit" Version="2.1.0-preview.5" />
paket add VijayAnand.MauiToolkit --version 2.1.0-preview.5
#r "nuget: VijayAnand.MauiToolkit, 2.1.0-preview.5"
// Install VijayAnand.MauiToolkit as a Cake Addin #addin nuget:?package=VijayAnand.MauiToolkit&version=2.1.0-preview.5&prerelease // Install VijayAnand.MauiToolkit as a Cake Tool #tool nuget:?package=VijayAnand.MauiToolkit&version=2.1.0-preview.5&prerelease
VijayAnand.MauiToolkit
This is a toolkit with a set of helper methods and classes to simplify working with .NET MAUI and Blazor.
Published as a NuGet package - VijayAnand.MauiToolkit
It depends on VijayAnand.MauiToolkit.Core NuGet package.
To start with, implements the concrete definition of the abstractions defined in Core package:
- Dialogs -
DialogService
(works with MainPage or Shell definition)- Additional abstraction specific to .NET MAUI with
FlowDirection
- Additional abstraction specific to .NET MAUI with
- Navigation -
NavigationService
(based on Shell Navigation pattern) - Share -
ShareService
(based on Maui Essentials) - Theme -
ThemeService
(based on UserAppTheme property)
And includes a set of Markup extension methods for rapid application development with C#.
These fluent APIs are made available in the VijayAnand.MauiToolkit.Markup
namespace.
Most importantly, provides an extension method to register these services in .NET MAUI host builder startup:
UseVijayAnandMauiToolkit()
Now it's possible to selectively register the services required into the DI container.
Added a configuration parameter of Enum type ServiceRegistrations
(Flags-attributed) to the UseVijayAnandMauiToolkit()
method.
To illustrate with a sample, if only interested in NavigationService:
Then, invoke UseVijayAnandMauiToolkit(ServiceRegistrations.Navigation)
.
And if DialogService is required along with NavigationService:
Then, invoke UseVijayAnandMauiToolkit(ServiceRegistrations.Dialogs | ServiceRegistrations.Navigation)
.
By default, the default value of configuration parameter is set to ServiceRegistrations.All
.
Usage:
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder.UseMauiApp<App>()
.UseVijayAnandMauiToolkit(); // Implicit value of ServiceRegistrations.All passed as configuration parameter
return builder.Build();
}
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net7.0 is compatible. net7.0-android was computed. net7.0-android33.0 is compatible. net7.0-ios was computed. net7.0-ios16.1 is compatible. net7.0-maccatalyst was computed. net7.0-maccatalyst16.1 is compatible. net7.0-macos was computed. net7.0-tizen7.0 is compatible. net7.0-tvos was computed. net7.0-windows was computed. net7.0-windows10.0.19041 is compatible. net8.0 was computed. 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. |
-
net7.0
- VijayAnand.MauiToolkit.Core (>= 2.1.0-preview.5)
-
net7.0-android33.0
- VijayAnand.MauiToolkit.Core (>= 2.1.0-preview.5)
-
net7.0-ios16.1
- VijayAnand.MauiToolkit.Core (>= 2.1.0-preview.5)
-
net7.0-maccatalyst16.1
- VijayAnand.MauiToolkit.Core (>= 2.1.0-preview.5)
-
net7.0-tizen7.0
- VijayAnand.MauiToolkit.Core (>= 2.1.0-preview.5)
-
net7.0-windows10.0.19041
- VijayAnand.MauiToolkit.Core (>= 2.1.0-preview.5)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on VijayAnand.MauiToolkit:
Package | Downloads |
---|---|
VijayAnand.MauiToolkit.Pro
VijayAnand.MauiToolkit.Pro is a toolkit with a set of helper methods and classes to simplify working with .NET MAUI and Blazor. |
GitHub repositories (3)
Showing the top 3 popular GitHub repositories that depend on VijayAnand.MauiToolkit:
Repository | Stars |
---|---|
egvijayanand/dotnet-maui-samples
.NET MAUI Samples
|
|
egvijayanand/dotnet-maui-templates
.NET MAUI Project and Item Templates for VS2022 and CLI.
|
|
drakewill-CRL/ROMSorter
Detect and rename ROMs and other games
|
Version | Downloads | Last updated |
---|---|---|
3.1.0 | 387 | 11/27/2023 |
3.0.0 | 88 | 11/14/2023 |
3.0.0-rc.2.2 | 58 | 11/7/2023 |
3.0.0-rc.2.1 | 69 | 10/31/2023 |
3.0.0-rc.2 | 67 | 10/13/2023 |
3.0.0-rc.1 | 74 | 9/18/2023 |
3.0.0-preview.7 | 64 | 9/12/2023 |
3.0.0-preview.1 | 100 | 4/24/2023 |
2.1.3 | 70 | 11/7/2023 |
2.1.2 | 75 | 10/31/2023 |
2.1.1 | 89 | 10/13/2023 |
2.1.0 | 140 | 9/19/2023 |
2.1.0-preview.7 | 64 | 9/12/2023 |
2.1.0-preview.6 | 65 | 4/24/2023 |
2.1.0-preview.5 | 107 | 1/3/2023 |
2.1.0-preview.4 | 96 | 1/2/2023 |
2.1.0-preview.3 | 78 | 12/30/2022 |
2.1.0-preview.2 | 72 | 12/28/2022 |
2.1.0-preview.1 | 75 | 12/27/2022 |
2.0.1 | 1,509 | 12/14/2022 |
2.0.0 | 809 | 11/11/2022 |
1.1.0 | 77 | 9/19/2023 |
1.1.0-preview.7 | 65 | 9/12/2023 |
1.1.0-preview.6 | 69 | 4/24/2023 |
1.1.0-preview.5 | 75 | 1/3/2023 |
1.1.0-preview.4 | 73 | 1/2/2023 |
1.1.0-preview.3 | 77 | 12/30/2022 |
1.1.0-preview.2 | 79 | 12/28/2022 |
1.1.0-preview.1 | 82 | 12/27/2022 |
1.0.3 | 662 | 12/14/2022 |
1.0.2 | 594 | 11/11/2022 |
1.0.2-pre3 | 413 | 8/4/2022 |
1.0.2-pre2 | 658 | 7/15/2022 |
1.0.2-pre1 | 396 | 7/4/2022 |
1.0.1 | 5,817 | 6/18/2022 |
1.0.1-pre1 | 384 | 6/9/2022 |
1.0.0 | 1,681 | 5/23/2022 |
1.0.0-pre9 | 185 | 4/29/2022 |
1.0.0-pre8 | 362 | 4/27/2022 |
1.0.0-pre7 | 318 | 4/12/2022 |
1.0.0-pre6 | 133 | 4/12/2022 |
1.0.0-pre5 | 124 | 4/4/2022 |
1.0.0-pre4 | 207 | 3/31/2022 |
1.0.0-pre3 | 124 | 3/31/2022 |
1.0.0-pre2 | 151 | 3/18/2022 |
1.0.0-pre12 | 128 | 5/13/2022 |
1.0.0-pre11 | 317 | 5/11/2022 |
1.0.0-pre10 | 113 | 5/5/2022 |
1.0.0-pre1 | 132 | 3/7/2022 |
What's new in ver. 2.1.0-preview.5:
-----------------------------------
1. Async property is now a bindable property.
2. MauiPage's TViewModel generic constraint is strengthened with the inclusion of the INotifyPropertyChanged interface.
3. Introduced another base class for .NET MAUI page definition, titled BasePage, with the ability to Auto Wireup ViewModel that follows a naming convention.
Like, SearchPage -> SearchViewModel
Page types are to be made available in the Views folder and ViewModel types in the ViewModels folder.
And both Page and ViewModel should be in the same assembly. If not then use, generic MauiPage<TViewModel> base type instead.
ViewModel type should inherit from BaseViewModel, a type from Core package that implements the INotifyPropertyChanged interface.
ViewModel should be registered in the .NET MAUI startup pipeline for the type to get resolved.
Then set the ViewModelLocator's AutoWireViewModel attached property to true.
Either from XAML like, ViewModelLocator.AutoWireViewModel="True" (import the appropriate XML namespace).
Or from the page constructor in the code-behind class file:
ViewModelLocator.SetAutoWireViewModel(this, true);
v2.1.0-preview.4:
Additional parameter introduced in the custom Prompt dialog to validate the user entered value before dismissing the dialog.
2.1.0-preview.3:
DialogService class is now marked as internal.
And to show the .NET MAUI dialogs, follow any of the below-mentioned approaches:
1. via Dependency Injection:
Register the dependency in the .NET MAUI startup pipeline.
Either with the UseVijayAnandMauiToolkit() extension method (invoked on the MauiAppBuilder instance).
Or directly add it to the Service collection, like:
builder.Services.AddSingleton<IDialogService>(GenericDialog.Instance);
builder.Services.AddSingleton<IMauiDialogService>(MauiDialog.Instance);
Then inject the implementation instance of the IDialogService/IMauiDialogService into the Page and invoke the appropriate method.
// Assuming _dialogService is the injected instance of IDialogService
await _dialogService.DisplayAlertAsync("Greeting", "Hello World", "OK");
// Assuming _mauiDialogService is the injected instance of IMauiDialogService with FlowDirection support
await _mauiDialogService.DisplayAlertAsync("Greeting", "Hello World", "OK", FlowDirection.RightToLeft);
2. via Static:
Instance of IDialogService is accessible via the GenericDialog/MauiDialog type's Instance property.
await GenericDialog.Instance.DisplayAlertAsync("Greeting", "Hello World", "OK");
// with FlowDirection support
await MauiDialog.Instance.DisplayAlertAsync("Greeting", "Hello World", "OK", FlowDirection.RightToLeft);
v2.1.0-preview.1:
1. ServiceRegistrations enum type is now moved to Core package.
2. Defined the MauiPage class, a base page to inherit while defining other pages, to easily work with .NET MAUI.
v2.0.1:
This version of package is released on top of .NET MAUI on .NET 7 SR1.1 (7.0.52) version.
v2.0.0:
Package supports .NET MAUI on .NET 7 and is built on top of .NET 7 GA release (7.0.49).
DisplayActionSheetAsync method in DialogService class now takes message and defaultButton as additional parameters in accordance with updated interface definition.
Added a new Markup Method, named AddSubMenuGroup, to define a sub-menu group within a menu group to manage the multi-level menu.
Here is an example of a sub-menu group:
"Change Location" is a first level menu group (under the "Locations" top level menu item) and "India" is a second level menu group within that.
This way multi-level menu can be defined.
MenuBarItems.Add(new MenuBarItem().Title("Locations")
.AddMenuGroup(new MenuFlyoutSubItem().Title("Change Location")
.AddSubMenuItem(new MenuFlyoutItem().Title("New York, USA"))
.AddSubMenuItem(new MenuFlyoutItem().Title("London, UK"))
.AddSubMenuItem(new MenuFlyoutItem().Title("Cape Town, RSA"))
.AddSubMenuItem(new MenuFlyoutItem().Title("Beijing, PRC"))
.AddSubMenuGroup(new MenuFlyoutSubItem().Title("India")
.AddSubMenuItem(new MenuFlyoutItem().Title("Chennai, TN"))
.AddSubMenuItem(new MenuFlyoutItem().Title("Kolkata, WB"))
.AddSubMenuItem(new MenuFlyoutItem().Title("Mumbai, MH"))
.AddSubMenuItem(new MenuFlyoutItem().Title("New Delhi, NCR"))))
.AddMenuItem(new MenuFlyoutItem().Title("Add a Location").BindCommand("AddLocationCommand")));
Join me on Developer Thoughts, https://egvijayanand.in/, an exclusive blog for .NET MAUI and Blazor.