AjroudSoftwares.MaterialDesignIcons.Maui
2.0.2
dotnet add package AjroudSoftwares.MaterialDesignIcons.Maui --version 2.0.2
NuGet\Install-Package AjroudSoftwares.MaterialDesignIcons.Maui -Version 2.0.2
<PackageReference Include="AjroudSoftwares.MaterialDesignIcons.Maui" Version="2.0.2" />
<PackageVersion Include="AjroudSoftwares.MaterialDesignIcons.Maui" Version="2.0.2" />
<PackageReference Include="AjroudSoftwares.MaterialDesignIcons.Maui" />
paket add AjroudSoftwares.MaterialDesignIcons.Maui --version 2.0.2
#r "nuget: AjroudSoftwares.MaterialDesignIcons.Maui, 2.0.2"
#:package AjroudSoftwares.MaterialDesignIcons.Maui@2.0.2
#addin nuget:?package=AjroudSoftwares.MaterialDesignIcons.Maui&version=2.0.2
#tool nuget:?package=AjroudSoftwares.MaterialDesignIcons.Maui&version=2.0.2
Material Design Icons for .NET MAUI
Use Material icon fonts in .NET MAUI with simple runtime lookup, multi-variant support, and a bundled metadata index generated from official codepoints sources.
Install
dotnet add package AjroudSoftwares.MaterialDesignIcons.Maui
What This Package Provides
- Five icon variants: Pictogrammers, Regular, Outlined, Rounded, Sharp
- Default icon source is Pictogrammers (
MaterialDesignIconsDesktop.ttf) - Google variants are still available as secondary sources
- Runtime lookup by icon name without hardcoding every glyph in C# source
- Bundled metadata generated from official
.codepointsfiles - C# helpers via
MaterialIconsandMaterialIconsMap - Search and discovery support via
Search,Find,FindAll, andCategories - XAML markup extensions for dynamic icon and font resolution on supported target frameworks
Register Fonts in MAUI
builder.ConfigureFonts(fonts =>
{
fonts.AddFont("MaterialDesignIconsDesktop.ttf", "MaterialDesignIconsPictogrammers");
fonts.AddFont("MaterialIcons-Regular.ttf", "MaterialIconsRegular");
fonts.AddFont("MaterialIconsOutlined-Regular.ttf", "MaterialIconsOutlined");
fonts.AddFont("MaterialIconsRound-Regular.ttf", "MaterialIconsRounded");
fonts.AddFont("MaterialIconsSharp-Regular.ttf", "MaterialIconsSharp");
});
Usage in C#
Resolve an icon by name. The lookup is forgiving, so names like home, Home, arrow_back, and ArrowBack work.
MaterialIcons.GetRequired("home") now resolves from the default Pictogrammers variant.
using AjroudSoftwares.MaterialDesignIcons.Maui;
var regularHome = MaterialIcons.GetRequired("home");
var pictogrammersHome = MaterialIcons.GetRequired("home", MaterialIconVariant.Pictogrammers);
var outlinedHome = MaterialIcons.GetRequired("home", MaterialIconVariant.Outlined);
var roundedArrowBack = MaterialIconsMap.Resolve("arrow_back", MaterialIconVariant.Rounded);
var sharpSearch = MaterialIconsMap.Resolve("Sharp.Search");
var defaultFont = MaterialIcons.FontFamily();
var pictogrammersFont = MaterialIcons.FontFamily(MaterialIconVariant.Pictogrammers);
var roundedFont = MaterialIcons.FontFamily(MaterialIconVariant.Rounded);
AI Quick Reference
For AI agents, prefer this order:
MaterialIcons.GetRequired("home")when you already know the exact icon name.MaterialIcons.Suggest("user profile")when you know the intent but not the exact icon name.MaterialIcons.FontFamily(MaterialIconVariant.Outlined)to get the matching MAUI font alias.
using AjroudSoftwares.MaterialDesignIcons.Maui;
var suggestions = MaterialIcons.Suggest("user profile", limit: 5);
var best = suggestions.FirstOrDefault();
var glyph = best?.Glyph ?? MaterialIcons.GetRequired("person");
var font = best?.FontFamily ?? MaterialIcons.FontFamily();
If you already know the variant, pass it into suggestions to reduce ambiguity:
var outlinedSuggestions = MaterialIcons.Suggest("back", limit: 5, variant: MaterialIconVariant.Outlined);
Runtime Lookup API
using AjroudSoftwares.MaterialDesignIcons.Maui;
var glyph = MaterialIcons.Get("settings");
var required = MaterialIcons.GetRequired("person", MaterialIconVariant.Outlined);
var icon = MaterialIcons.Find("arrow_back", MaterialIconVariant.Rounded);
var allHomes = MaterialIcons.FindAll("home");
if (MaterialIconsMap.TryResolve("favorite", MaterialIconVariant.Sharp, out var favoriteGlyph))
{
// use favoriteGlyph
}
if (MaterialIconsMap.TryResolve("Outlined.Notifications", out var notificationsGlyph))
{
// use notificationsGlyph
}
Using with FontImageSource
using AjroudSoftwares.MaterialDesignIcons.Maui;
using Microsoft.Maui.Controls;
var icon = MaterialIcons.Find("home", MaterialIconVariant.Outlined);
var imageSource = new FontImageSource
{
Glyph = icon?.Glyph,
FontFamily = icon?.FontFamily,
Size = 24,
};
Usage in XAML
For all target frameworks, you can resolve the glyph in C# and bind it in XAML like normal text.
<Label Text="{Binding HomeGlyph}"
FontFamily="MaterialIconsRegular"
FontSize="28" />
using AjroudSoftwares.MaterialDesignIcons.Maui;
public string HomeGlyph => MaterialIcons.GetRequired("home");
public string RoundedArrowGlyph => MaterialIcons.GetRequired("arrow_back", MaterialIconVariant.Rounded);
XAML Markup Extensions
On net9.0+ and net10.0+, the package also includes markup extensions for simpler XAML usage:
xmlns:mdi="clr-namespace:AjroudSoftwares.MaterialDesignIcons.Maui"
<Label Text="{mdi:Icon Name=home, Variant=Outlined}"
FontFamily="{mdi:IconFont Variant=Outlined}"
FontSize="28" />
IconExtension resolves the glyph string.
IconFontExtension resolves the matching MAUI font alias.
Search and Discovery
using AjroudSoftwares.MaterialDesignIcons.Maui;
var arrows = MaterialIconsMap.Search("arrow");
var accounts = MaterialIconsMap.Categories["account"];
var homeMatches = MaterialIcons.FindAll("home");
var userSuggestions = MaterialIconsMap.Suggest("user profile", limit: 5);
Each search result is a MaterialIconInfo instance with:
VariantNamePascalNameGlyphKeyFontFamily
Migration from Older Versions
Older versions exposed generated constants such as MaterialIcons.Regular.Home and XAML usage through x:Static.
That API has been replaced with metadata-backed runtime lookup:
Old:
MaterialIcons.Regular.HomeNew:
MaterialIcons.GetRequired("home")Old:
MaterialIcons.Rounded.ArrowBackNew:
MaterialIcons.GetRequired("arrow_back", MaterialIconVariant.Rounded)Old:
MaterialIconsMap.Resolve("Rounded.ArrowBack")New:
MaterialIconsMap.Resolve("Rounded.ArrowBack")orMaterialIconsMap.Resolve("arrow_back", MaterialIconVariant.Rounded)
This keeps the library smaller and simpler while using metadata-backed names as the source of truth.
Updating Icon Sources
Google variants can be refreshed automatically with the generator:
python tools/generate_icons.py
Pictogrammers is maintained manually in this repository:
- Font file:
Resources/Fonts/MaterialDesignIconsDesktop.ttf - Codepoints file:
tools/codepoints/MaterialDesignIcons-Pictogrammers.codepoints
After replacing any codepoints/font files, regenerate metadata:
python tools/generate_icons.py --skip-download
Notes
- Icon names come from bundled codepoints metadata, not from parsing names out of the font files themselves.
- Default variant is Pictogrammers.
- Google variants are included as secondary sources: Regular, Outlined, Rounded, and Sharp.
- Markup extensions are currently compiled for
net9.0+andnet10.0+. - If you prefer explicit control, you can always use
MaterialIcons.GetRequired(...)in C# and bind the result into XAML.
License
MIT. See License.txt.
| Product | Versions 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. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- No dependencies.
-
net8.0
- No dependencies.
-
net9.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.
v2.0.2: Explicit versioning to resolve NuGet cache/assembly version mismatch. Ensures fonts, metadata, and targets are bundled consistently across all target frameworks.