Strongly typed parsed icons set from materialdesignicons.com and display control implementations for different GUI frameworks.
Parsed icons set from materialdesignicons.com and display control implementations for different GUI frameworks.
This project consists of 3 parts:
FAQ - frequently asked questions
dotnet add package Material.Icons.Avalonia
App.xaml
(for 2.0.0
version and higher):
<Application xmlns:materialIcons="clr-namespace:Material.Icons.Avalonia;assembly=Material.Icons.Avalonia"
...>
<Application.Styles>
...
<materialIcons:MaterialIconStyles />
</Application.Styles>
</Application>
Add Material.Icons.Avalonia
namespace to the root element of your file (your IDE can suggest it or do it automatically):
xmlns:materialIcons="clr-namespace:Material.Icons.Avalonia;assembly=Material.Icons.Avalonia"
Use MaterialIcon
control:
<materialIcons:MaterialIcon Kind="Abacus" />
The Foreground
property controls the color of the icon.
Also, there is MaterialIconExt
which allows you to use is as the markup extension:
<Button Content="{materialIcons:MaterialIconExt Kind=Abacus}" />
dotnet add package Material.Icons.Avalonia
type App() =
inherit Application()
override this.Initialize() =
..
this.Styles.Add(MaterialIconStyles(null))
..
MaterialIcon
namespace Avalonia.FuncUI.DSL
[<AutoOpen>]
module MaterialIcon =
open Material.Icons
open Material.Icons.Avalonia
open Avalonia.FuncUI.Types
open Avalonia.FuncUI.Builder
let create (attrs: IAttr<MaterialIcon> list): IView<MaterialIcon> =
ViewBuilder.Create<MaterialIcon>(attrs)
type MaterialIcon with
static member kind<'t when 't :> MaterialIcon>(value: MaterialIconKind) : IAttr<'t> =
AttrBuilder<'t>.CreateProperty<MaterialIconKind>(MaterialIcon.KindProperty, value, ValueNone)
Button.create [
Button.content (
MaterialIcon.create [
MaterialIcon.kind MaterialIconKind.Export
]
)
]
Install Material.Icons.WPF nuget package:
dotnet add package Material.Icons.WPF
Add Material.Icons.WPF
namespace to the root element of your file (your IDE can suggest it or do it automatically):
xmlns:materialIcons="clr-namespace:Material.Icons.WPF;assembly=Material.Icons.WPF"
Use MaterialIcon
control:
<materialIcons:MaterialIcon Kind="Abacus" />
The Foreground
property controls the color of the icon.
Also, there is MaterialIconExt
which allows you to use is as the markup extension:
<Button Content="{materialIcons:MaterialIconExt Kind=Abacus}" />
Install Material.Icons nuget package:
dotnet add package Material.Icons
Icon types stored in Material.Icons.MaterialIconKind
enum.
We can resolve an icon path by using Material.Icons.MaterialIconDataProvider.GetData()
.
Currently, there is no way to add your own icons, as icons are enum and cannot be modified.
But you can override some existing icons to use your own data:
public class CustomIconProvider : MaterialIconDataProvider
{
public override string ProvideData(MaterialIconKind kind)
{
return kind switch
{
MaterialIconKind.TrophyVariant => "some SVG code",
_ => base.ProvideData(kind)
};
}
}
// When your application starts (e.g. in the Main method) replace MaterialIconDataProvider with your own
public static int Main(string[] args)
{
MaterialIconDataProvider.Instance = new CustomIconProvider(); // Settings custom provider
// Application startup code
// return BuildAvaloniaApp().StartWithClassicDesktopLifetime(args);
}
Foreground
property.MaterialIcon
control - use Width
or/and Height
properties.MaterialIconExt
- use Size
property.Material.Icons
package version in your project file.1.0.0
and 1.0.1
are compatible, but 1.0.0
and 1.1.0
might not be.