-
Notifications
You must be signed in to change notification settings - Fork 224
Usage
#Namespaces First thing's first - make sure that you add the appropriate namespace according to the type of app you are building:
###WPF
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"###UWP
xmlns:iconPacks="using:MahApps.Metro.IconPacks"#Referencing Now that that is out of the way, you can reference the icons in your application like so (match the syntax to the package you installed):
<iconPacks:PackIconMaterial Kind="EmoticonCool" /><iconPacks:PackIconFontAwesome Kind="FontAwesome" /><iconPacks:PackIconOcticons Kind="MarkGithub" /><iconPacks:PackIconModern Kind="ThumbsUp" /><iconPacks:PackIconEntypo Kind="EmojiHappy" />#Samples ###WPF
<Window x:Class="IconPacksTest.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
Title="IconPacks" Height="300" Width="300">
<Grid>
<iconPacks:PackIconMaterial Kind="EmoticonCool" VerticalAlignment="Center" HorizontalAlignment="Center" />
</Grid>
</Window>###UWP
<Page x:Class="MahApps.Metro.IconPacks.Test.App.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:iconPacks="using:MahApps.Metro.IconPacks"
mc:Ignorable="d">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<iconPacks:PackIconFontAwesome Width="32"
Height="32"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Kind="AddressBook" />
</Grid>
</Page>#MarkupExtension (WPF Only)
A faster way to get a Control with an Icon is to use the MarkupExtension(s).
Exmaple: If you want a Button with a PackIconFontAwesome icon, then you would do something like this:
<Button Content="{iconPacks:PackIconFontAwesome StarOutline}" />It's also possible to change some properties of the icon itself with MarkupExtension(s):
<Button Content="{iconPacks:PackIconFontAwesome Spinner, Width=32, Height=32, Spin=True}" />You can even use a general (generic) MarkupExtension:
<Button Content="{iconPacks:PackIcon {x:Static iconPacks:PackIconMaterialKind.Cookie}, Width=32, Height=32}" />You can use these MarkupExtensions for all controls with Content property which can accept other objects (Controls).
#Properties
These various properties can be used to do everything from assign the icon you want (Kind) to animating it (Spin):
| Property | Description |
|---|---|
Kind |
Gets or sets the icon to display. Each IconPack has it's own icon type and an enumeration for it. |
Flip |
Gets or sets the flip orientation. Possible values are Normal, Horizontal, Vertical or Both from the enumeration type PackIconFlipOrientation. |
Rotation |
Gets or sets the rotation (angle) of the inner icon. Possible values are 0-360. |
Spin |
Gets or sets a value indicating whether the inner icon is spinning (rotating) (true or false). |
SpinDuration |
Gets or sets the duration of the spinning animation (in seconds). This will also restart the spin animation and works only if Spin property is set to true. |
SpinEasingFunction |
Gets or sets the EasingFunction (IEasingFunction) of the spinning animation. This will also restart the spin animation and works only if Spin property is set to true. |
SpinAutoReverse |
Gets or sets the AutoReverse of the spinning animation. This will also restart the spin animation and works only if Spin property is set to true. |
Control.Properties |
All public properties of Control, e.g. Width and Height
|
#Styling Sometimes it's necessary to change some properties for all used IconPack controls. All controls have styles which can be use for global changes or anything else.
For the MahApps.Metro.IconPacks you can create a custom resource dictionary (we called ours CustomIconPacksStyles.xaml) and add it to the App.xaml ResourceDictionary.MergedDictionaries tag.
<Application x:Class="IconPacksTest.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<!-- some other resources -->
<!-- your custom icon resource -->
<ResourceDictionary Source="pack://application:,,,/IconPacksTest;component/Resources/CustomIconPacksStyles.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>Here is the resource dictionary content for all IconPacks in this sample (for CustomIconPacksStyles.xaml).
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks">
<ResourceDictionary.MergedDictionaries>
<!-- reference all necessary original resource dictionaries -->
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro.IconPacks;component/Themes/PackIconMaterial.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro.IconPacks;component/Themes/PackIconFontAwesome.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro.IconPacks;component/Themes/PackIconOcticons.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro.IconPacks;component/Themes/PackIconModern.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro.IconPacks;component/Themes/PackIconEntypo.xaml" />
</ResourceDictionary.MergedDictionaries>
<!-- now make some global changes for the icon pack controls without using new keys -->
<Style TargetType="{x:Type iconPacks:PackIconMaterial}" BasedOn="{StaticResource MahApps.Metro.Styles.PackIconMaterial}">
<Setter Property="Width" Value="32" />
<Setter Property="Height" Value="32" />
</Style>
<Style TargetType="{x:Type iconPacks:PackIconFontAwesome}" BasedOn="{StaticResource MahApps.Metro.Styles.PackIconFontAwesome}">
<Setter Property="Width" Value="24" />
<Setter Property="Height" Value="24" />
</Style>
<Style TargetType="{x:Type iconPacks:PackIconOcticons}" BasedOn="{StaticResource MahApps.Metro.Styles.PackIconOcticons}">
<Setter Property="Width" Value="48" />
<Setter Property="Height" Value="48" />
</Style>
<Style TargetType="{x:Type iconPacks:PackIconModern}" BasedOn="{StaticResource MahApps.Metro.Styles.PackIconModern}">
<Setter Property="HorizontalAlignment" Value="Center" />
</Style>
<Style TargetType="{x:Type iconPacks:PackIconEntypo}" BasedOn="{StaticResource MahApps.Metro.Styles.PackIconEntypo}">
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="HorizontalAlignment" Value="Center" />
</Style>
</ResourceDictionary>If you use the IconPack with all included icons you can also use this resource dictionary:
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro.IconPacks;component/Themes/IconPacks.xaml" />#Strong naming
If you need strong named dlls then you should use the Strong Namer from @dsplaisted. If this doesn't work then you can clone this repository and compile your own strongly named dlls.