Projektanker.Icons.Avalonia 9.0.1
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 IconProvider.Current
.
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()
{
IconProvider.Current
.Register<FontAwesomeIconProvider>()
.Register<MaterialDesignIconProvider>();
return AppBuilder.Configure<App>()
.UsePlatformDetect()
.LogToTrace();
}
}
2. Add xml namespace
Add xmlns:i="https://github.com/projektanker/icons.avalonia"
to your view.
3. Use the icon
Standalone
<i:Icon Value="fa-brands fa-anchor" />
Attached to ContentControl (e.g. Button)
<Button i:Attached.Icon="fa-brands fa-anchor" />
Attached to MenuItem
<MenuItem Header="About" i:MenuItem.Icon="fa-solid fa-circle-info" />
Custom icon size
<i:Icon Value="fa-brands fa-anchor" FontSize="24" />
Animated
<i:Icon Value="fa-spinner" Animation="Pulse" />
<i:Icon Value="fa-sync" Animation="Spin" />
As an Image source
<Image>
<Image.Source>
<i:IconImage Value="fa-brands fa-anchor" Brush="(defaults to black)" />
</Image.Source>
</Image>
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 model of the requested icon.
/// </summary>
/// <param name="value">The value specifying the icon to return it's model from.</param>
/// <returns>The model of the icon.</returns>
/// <exception cref="System.Collections.Generic.KeyNotFoundException">
/// The icon associated with the specified <paramref name="value"/> does not exists.
/// </exception>
IconModel GetIcon(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
:
IconProvider.Current.Register<MyCustomIconProvider>()
or
IIconProvider provider = new MyCustomIconProvider(/* custom ctor arguments */);
IconProvider.Current.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
.
Showing the top 20 packages that depend on Projektanker.Icons.Avalonia.
Packages | Downloads |
---|---|
Projektanker.Icons.Avalonia.FontAwesome
A library to easily display FontAwesome icons in an Avalonia App.
|
11 |
Projektanker.Icons.Avalonia.FontAwesome
A library to easily display FontAwesome icons in an Avalonia App.
|
9 |
Projektanker.Icons.Avalonia.FontAwesome
A library to easily display FontAwesome icons in an Avalonia App.
|
8 |
.NET Standard 2.0
- Avalonia (>= 11.0.2)
Version | Downloads | Last updated |
---|---|---|
9.4.1 | 0 | 10/04/2024 |
9.4.0 | 10 | 07/23/2024 |
9.3.0 | 5 | 07/10/2024 |
9.2.0 | 9 | 07/11/2024 |
9.1.2 | 8 | 07/11/2024 |
9.1.1 | 3 | 07/11/2024 |
9.0.1 | 16 | 07/07/2024 |
9.0.0 | 8 | 07/11/2024 |
8.4.0 | 17 | 07/07/2024 |
8.3.0 | 3 | 07/11/2024 |
8.2.0 | 6 | 07/07/2024 |
8.1.0 | 10 | 06/23/2024 |
8.0.0 | 8 | 07/11/2024 |
7.0.1 | 3 | 07/11/2024 |
7.0.0 | 7 | 07/11/2024 |
6.6.0 | 6 | 07/11/2024 |
6.6.0-rc1.1 | 5 | 07/11/2024 |
6.6.0-preview6 | 4 | 07/11/2024 |
6.5.0-preview6 | 8 | 07/11/2024 |
6.5.0-preview5 | 2 | 07/11/2024 |
6.4.0-preview5 | 4 | 07/07/2024 |
6.3.0-preview4 | 7 | 07/11/2024 |
6.2.0-preview1 | 5 | 07/11/2024 |
6.1.0-preview1 | 5 | 07/11/2024 |
6.0.0-preview1 | 3 | 07/08/2024 |
5.13.0 | 3 | 07/11/2024 |
5.12.0 | 7 | 07/11/2024 |
5.11.0 | 4 | 07/11/2024 |
5.10.0 | 4 | 07/11/2024 |
5.9.0 | 8 | 07/11/2024 |
5.8.0 | 8 | 07/11/2024 |
5.7.0 | 8 | 07/11/2024 |
5.6.0 | 7 | 07/11/2024 |
5.5.0 | 3 | 07/28/2024 |
5.4.0 | 8 | 07/11/2024 |
5.3.0 | 8 | 07/11/2024 |
5.2.0 | 9 | 07/11/2024 |
5.1.0 | 7 | 07/07/2024 |
5.0.2 | 8 | 07/11/2024 |
5.0.1 | 8 | 07/11/2024 |
5.0.0 | 8 | 07/11/2024 |
4.5.0 | 5 | 07/11/2024 |
4.4.0 | 8 | 07/11/2024 |
4.3.0 | 3 | 07/11/2024 |
4.2.1 | 8 | 07/11/2024 |
4.2.0 | 4 | 07/11/2024 |
4.1.0 | 8 | 07/11/2024 |
4.0.1 | 8 | 07/11/2024 |
4.0.0 | 4 | 07/11/2024 |
3.7.1 | 21 | 07/11/2024 |
3.7.0 | 8 | 07/11/2024 |
3.5.0 | 5 | 07/11/2024 |
3.4.1 | 8 | 07/11/2024 |
3.4.0 | 10 | 07/11/2024 |
3.2.0 | 9 | 07/11/2024 |
3.1.4 | 8 | 07/11/2024 |
3.1.2 | 5 | 07/11/2024 |
3.1.1 | 5 | 07/11/2024 |
3.1.0 | 3 | 07/11/2024 |
3.1.0-pre | 5 | 08/10/2024 |
3.0.0 | 5 | 07/11/2024 |
3.0.0-pre | 5 | 07/11/2024 |
2.0.2 | 4 | 07/11/2024 |
2.0.1 | 3 | 07/07/2024 |
2.0.0 | 5 | 07/11/2024 |
1.0.0 | 9 | 07/11/2024 |