NexusMods.Projektanker.Icons.Avalonia.MaterialDesign
6.0.0-rc1
dotnet add package NexusMods.Projektanker.Icons.Avalonia.MaterialDesign --version 6.0.0-rc1
NuGet\Install-Package NexusMods.Projektanker.Icons.Avalonia.MaterialDesign -Version 6.0.0-rc1
<PackageReference Include="NexusMods.Projektanker.Icons.Avalonia.MaterialDesign" Version="6.0.0-rc1" />
<PackageVersion Include="NexusMods.Projektanker.Icons.Avalonia.MaterialDesign" Version="6.0.0-rc1" />
<PackageReference Include="NexusMods.Projektanker.Icons.Avalonia.MaterialDesign" />
paket add NexusMods.Projektanker.Icons.Avalonia.MaterialDesign --version 6.0.0-rc1
#r "nuget: NexusMods.Projektanker.Icons.Avalonia.MaterialDesign, 6.0.0-rc1"
#:package NexusMods.Projektanker.Icons.Avalonia.MaterialDesign@6.0.0-rc1
#addin nuget:?package=NexusMods.Projektanker.Icons.Avalonia.MaterialDesign&version=6.0.0-rc1&prerelease
#tool nuget:?package=NexusMods.Projektanker.Icons.Avalonia.MaterialDesign&version=6.0.0-rc1&prerelease
Icons.Avalonia
A library to easily display icons in an Avalonia App.
NuGet
| Name | Description | Version |
|---|---|---|
| Projektanker.Icons.Avalonia | Core library | |
| Projektanker.Icons.Avalonia.FontAwesome | Font Awesome 6 Free | |
| Projektanker.Icons.Avalonia.MaterialDesign | Material Design Icons |
Icon providers
| Name | Prefix | Example |
|---|---|---|
| FontAwesome 6 | fa |
fa-github |
| MaterialDesign | mdi |
mdi-github |
Usage
A full example is available in the demo directory.
1. Register icon providers on app start up
Register the icon provider(s) with the AppBuilder.
class Program
{
// Initialization code. Don't use any Avalonia, third-party APIs or any
// SynchronizationContext-reliant code before AppMain is called: things aren't initialized
// yet and stuff might break.
public static void Main(string[] args)
{
BuildAvaloniaApp()
.StartWithClassicDesktopLifetime(args);
}
// Avalonia configuration, don't remove; also used by visual designer.
public static AppBuilder BuildAvaloniaApp()
{
return AppBuilder.Configure<App>()
.UsePlatformDetect()
.LogToTrace()
.WithIcons(container => container
.Register<FontAwesomeIconProvider>()
.Register<MaterialDesignIconProvider>());
}
}
2. Add xml namespace
Add xmlns:i="clr-namespace:Projektanker.Icons.Avalonia;assembly=Projektanker.Icons.Avalonia" to your view.
3. Use the icon
Standalone
<i:Icon Value="fa-brands fa-github" />
Attached to ContentControl (e.g. Button)
<Button i:Attached.Icon="fa-brands fa-github" />
Attached to MenuItem
<MenuItem Header="About" i:MenuItem.Icon="fa-solid fa-circle-info" />
Animated
⚠️ There is currently a bug in Avalonia 11: https://github.com/AvaloniaUI/Avalonia/issues/8791
<i:Icon Value="fa-spinner" Animation="Pulse" />
<i:Icon Value="fa-sync" Animation="Spin" />
Done
Implement your own Icon Provider
Just implement the IIconProvider interface:
namespace Projektanker.Icons.Avalonia
{
/// <summary>
/// Represents an icon reader.
/// </summary>
public interface IIconReader
{
/// <summary>
/// Gets the SVG path of the requested icon.
/// </summary>
/// <param name="value">The value specifying the icon to return it's path from.</param>
/// <returns>The path of the icon.</returns>
/// <exception cref="System.Collections.Generic.KeyNotFoundException">
/// The icon associated with the specified <paramref name="value"/> does not exists.
/// </exception>
string GetIconPath(string value);
}
/// <summary>
/// Represents an icon provider.
/// </summary>
public interface IIconProvider : IIconReader
{
/// <summary>
/// Gets the prefix of the <see cref="IIconProvider"/>.
/// </summary>
string Prefix { get; }
}
}
and register it with the IIconProviderContainer:
container.Register<MyCustomIconProvider>()
or
IIconProvider provider = new MyCustomIconProvider(/* custom ctor arguments */);
container.Register(provider);
The IIconProvider.Prefix property has to be unique within all registered providers. It is used to select the right provider. E.g. FontAwesomeIconProvider's prefix is fa.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. 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. net9.0 was computed. 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 was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- NexusMods.Projektanker.Icons.Avalonia (>= 6.0.0-rc1)
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 |
|---|---|---|
| 6.0.0-rc1 | 253 | 6/6/2023 |