生活随笔
收集整理的這篇文章主要介紹了
WPF 模仿IconPacks库写图标按钮
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
先上原鏈接,一個(gè)很不錯(cuò)的wpf圖標(biāo)庫 :?
https://github.com/MahApps/MahApps.Metro.IconPacks
提供了大量的圖標(biāo)可以用,如下圖:(部分截圖)
簡單分析了一下代碼,
并模仿它寫一個(gè)圖標(biāo)類和簡單的使用示例:
App.xaml:
<Application x:Class="IconPackMini.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:IconPackMini"StartupUri="MainWindow.xaml"><Application.Resources><Style TargetType="local:IconButton"><Setter Property="FontFamily" Value="微軟雅黑"/><Setter Property="FontSize" Value="14"/><Setter Property="Foreground" Value="Black"/><Setter Property="BorderThickness" Value="0"/><Setter Property="Margin" Value="0"/><Setter Property="Padding" Value="0"/><Setter Property="FocusVisualStyle" Value="{x:Null}"/><Setter Property="SnapsToDevicePixels" Value="True"/><Setter Property="UseLayoutRounding" Value="True"/><Setter Property="Background" Value="Transparent"/><Setter Property="SnapsToDevicePixels" Value="True"/><Setter Property="Padding" Value="5"/><Setter Property="Cursor" Value="Hand"/><Setter Property="Width" Value="32"/><Setter Property="Height" Value="{Binding ActualWidth,RelativeSource={RelativeSource Self}}"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="local:IconButton"><Border x:Name="_border" CornerRadius="{TemplateBinding CornerRadius}"ClipToBounds="True"BorderThickness="{TemplateBinding BorderThickness}"BorderBrush="{TemplateBinding BorderBrush}"Background="{TemplateBinding Background}"><Viewbox Margin="{TemplateBinding Padding}"Stretch="Uniform"><Path x:Name="_path"Width="{TemplateBinding PathWidth}"Height="{TemplateBinding PathHeight}"Fill="{TemplateBinding Foreground}" Data="{TemplateBinding Geometry}"/></Viewbox></Border><ControlTemplate.Triggers><Trigger Property="IsMouseOver" Value="True" SourceName="_border"><Setter Property="Background" Value="{Binding HoverBackground,RelativeSource={RelativeSource AncestorType=local:IconButton}}" TargetName="_border"/><Setter Property="Fill" Value="{Binding HoverForeground,RelativeSource={RelativeSource AncestorType=local:IconButton}}" TargetName="_path"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter>
</Style></Application.Resources>
</Application>
iconKey 枚舉類:
namespace IconPackMini
{public enum IconKey{None,/// <summary>/// 關(guān)閉按鈕/// </summary>Close,/// <summary>/// 最小化按鈕/// </summary>MinSize,/// <summary>/// 普通最大化按鈕/// </summary>MaxSize,/// <summary>/// 全屏后最大化按鈕/// </summary>MaxToNormal,/// <summary>/// 設(shè)置按鈕/// </summary>Setting,/// <summary>/// 五角星/// </summary>Star,}
}
還有大部分控件類代碼,都放在倉庫內(nèi),自取。
擴(kuò)展也很簡單,使用時(shí),取得path后,添加新圖標(biāo)到IconKey?和IconKeyDic內(nèi)就可以了,對(duì)于不想引用類庫又想用的人,還行。
效果圖:
【原創(chuàng)】轉(zhuǎn)載請(qǐng)注明出處。
【加群】要加入 WPF UI 微信群的,可以添加我的微信。
【資源】代碼倉庫地址:https://gitee.com/gxygitee/pub.git
總結(jié)
以上是生活随笔為你收集整理的WPF 模仿IconPacks库写图标按钮的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。