Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

pirms 8 mēnešiem
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. [icons-nuget]: https://www.nuget.org/packages/Material.Icons/
  2. [wpf-nuget]: https://www.nuget.org/packages/Material.Icons.WPF/
  3. [avalonia-nuget]: https://www.nuget.org/packages/Material.Icons.Avalonia/
  4. # Material.Icons
  5. Parsed icons set from [materialdesignicons.com](https://materialdesignicons.com/) and display control implementations for different GUI frameworks.
  6. - All icons are **always up-to-date** because automatically updated every 6 hours.
  7. - **Small package size** because icons are graphically encoded via SVG Path.
  8. - Icon types are **strongly typed** enum, so your **IDE will suggest available variants**:
  9. ![895428ad-6010-4ffd-bd88-61aecd50f5e1](https://user-images.githubusercontent.com/29896317/213889827-ca4f7673-115a-433e-9fde-305d55d36772.gif)
  10. ## Structure
  11. This project consists of 3 parts:
  12. - [![](https://img.shields.io/nuget/dt/Material.Icons?label=Material.Icons&style=flat-square)](#meta) contains info about the icons
  13. - [![](https://img.shields.io/nuget/dt/Material.Icons.Avalonia?color=blue&label=Material.Icons.Avalonia&style=flat-square)](#avalonia) contains controls for **AvaloniaUI**
  14. - [![](https://img.shields.io/nuget/dt/Material.Icons.WPF?color=blue&label=Material.Icons.WPF&style=flat-square)](#wpf) contains controls for **WPF**
  15. - [FAQ](#faq) - frequently asked questions
  16. ## Avalonia
  17. #### Getting started
  18. 1. Install [Material.Icons.Avalonia nuget package](https://www.nuget.org/packages/Material.Icons.Avalonia/):
  19. ```shell
  20. dotnet add package Material.Icons.Avalonia
  21. ```
  22. [![avalonia-nuget](https://img.shields.io/nuget/v/Material.Icons.Avalonia?label=Material.Icons.Avalonia&style=flat-square)][avalonia-nuget]
  23. [![avalonia-nuget](https://img.shields.io/nuget/dt/Material.Icons.Avalonia?color=blue&label=Downloads&style=flat-square)][avalonia-nuget]
  24. 2. Include styles in `App.xaml` (for `2.0.0` version and higher):
  25. ```xaml
  26. <Application xmlns:materialIcons="clr-namespace:Material.Icons.Avalonia;assembly=Material.Icons.Avalonia"
  27. ...>
  28. <Application.Styles>
  29. ...
  30. <materialIcons:MaterialIconStyles />
  31. </Application.Styles>
  32. </Application>
  33. ```
  34. For `1.*.*`:
  35. ```xaml
  36. <Application ...>
  37. <Application.Styles>
  38. ...
  39. <StyleInclude Source="avares://Material.Icons.Avalonia/App.xaml" />
  40. </Application.Styles>
  41. </Application>
  42. ```
  43. ## Avalonia FuncUI (F#)
  44. #### Getting started
  45. 1. Install [Material.Icons.Avalonia nuget package](https://www.nuget.org/packages/Material.Icons.Avalonia/):
  46. ```shell
  47. dotnet add package Material.Icons.Avalonia
  48. ```
  49. [![avalonia-nuget](https://img.shields.io/nuget/v/Material.Icons.Avalonia?label=Material.Icons.Avalonia&style=flat-square)][avalonia-nuget]
  50. [![avalonia-nuget](https://img.shields.io/nuget/dt/Material.Icons.Avalonia?color=blue&label=Downloads&style=flat-square)][avalonia-nuget]
  51. 2. Import styles in Application (or if you use XAML check instructions for plain Avalonia)
  52. ```fsharp
  53. type App() =
  54. inherit Application()
  55. override this.Initialize() =
  56. ..
  57. this.Styles.Add(MaterialIconStyles(null))
  58. ..
  59. ```
  60. 3. Create bindings for `MaterialIcon`
  61. ```fsharp
  62. namespace Avalonia.FuncUI.DSL
  63. [<AutoOpen>]
  64. module MaterialIcon =
  65. open Material.Icons
  66. open Material.Icons.Avalonia
  67. open Avalonia.FuncUI.Types
  68. open Avalonia.FuncUI.Builder
  69. let create (attrs: IAttr<MaterialIcon> list): IView<MaterialIcon> =
  70. ViewBuilder.Create<MaterialIcon>(attrs)
  71. type MaterialIcon with
  72. static member kind<'t when 't :> MaterialIcon>(value: MaterialIconKind) : IAttr<'t> =
  73. AttrBuilder<'t>.CreateProperty<MaterialIconKind>(MaterialIcon.KindProperty, value, ValueNone)
  74. ```
  75. 4. Use
  76. ```fsharp
  77. Button.create [
  78. Button.content (
  79. MaterialIcon.create [
  80. MaterialIcon.kind MaterialIconKind.Export
  81. ]
  82. )
  83. ]
  84. ```
  85. ## WPF
  86. #### Getting started
  87. Install [Material.Icons.WPF nuget package](https://www.nuget.org/packages/Material.Icons.WPF/):
  88. ```shell
  89. dotnet add package Material.Icons.WPF
  90. ```
  91. [![wpf-nuget](https://img.shields.io/nuget/v/Material.Icons.WPF?label=Material.Icons.WPF&style=flat-square)][wpf-nuget]
  92. [![wpf-nuget](https://img.shields.io/nuget/dt/Material.Icons.WPF?color=blue&label=Downloads&style=flat-square)][wpf-nuget]
  93. #### Using
  94. Add `Material.Icons.WPF` namespace to the root element of your file (your IDE can suggest it or do it automatically):
  95. ```
  96. xmlns:materialIcons="clr-namespace:Material.Icons.WPF;assembly=Material.Icons.WPF"
  97. ```
  98. Use `MaterialIcon` control:
  99. ```xaml
  100. <materialIcons:MaterialIcon Kind="Abacus" />
  101. ```
  102. The `Foreground` property controls the color of the icon.
  103. Also, there is `MaterialIconExt` which allows you to use is as the markup extension:
  104. ```xaml
  105. <Button Content="{materialIcons:MaterialIconExt Kind=Abacus}" />
  106. ```
  107. ## Meta
  108. #### Getting started
  109. Install [Material.Icons nuget package](https://www.nuget.org/packages/Material.Icons/):
  110. ```shell
  111. dotnet add package Material.Icons
  112. ```
  113. [![icons-nuget](https://img.shields.io/nuget/v/Material.Icons?label=Material.Icons&style=flat-square)][icons-nuget]
  114. [![icons-nuget](https://img.shields.io/nuget/dt/Material.Icons?color=blue&label=Downloads&style=flat-square)][icons-nuget]
  115. #### Using
  116. Icon types stored in `Material.Icons.MaterialIconKind` enum.
  117. We can resolve an icon path by using `Material.Icons.MaterialIconDataProvider.GetData()`.
  118. #### Adding your own icons
  119. Currently, there is no way to add your own icons, as icons are enum and cannot be modified.
  120. But you can override some existing icons to use your own data:
  121. ```csharp
  122. public class CustomIconProvider : MaterialIconDataProvider
  123. {
  124. public override string ProvideData(MaterialIconKind kind)
  125. {
  126. return kind switch
  127. {
  128. MaterialIconKind.TrophyVariant => "some SVG code",
  129. _ => base.ProvideData(kind)
  130. };
  131. }
  132. }
  133. // When your application starts (e.g. in the Main method) replace MaterialIconDataProvider with your own
  134. public static int Main(string[] args)
  135. {
  136. MaterialIconDataProvider.Instance = new CustomIconProvider(); // Settings custom provider
  137. // Application startup code
  138. // return BuildAvaloniaApp().StartWithClassicDesktopLifetime(args);
  139. }
  140. ```
  141. ## FAQ
  142. #### How to change icon color?
  143. - Change `Foreground` property.
  144. #### How to update icons?
  145. - You can manually set `Material.Icons` package version in your project file.
  146. #### What about versioning policy?
  147. - We use semver.
  148. Any package with identical major and minor versions is compatible.
  149. For example, `1.0.0` and `1.0.1` are compatible, but `1.0.0` and `1.1.0` might not be.