WPF 模仿IconPacks库写图标按钮

先上原链接,一个很不错的wpf图标库 : 

https://github.com/MahApps/MahApps.Metro.IconPacks

提供了大量的图标可以用,如下图:(部分截图)

5670b5faf33d96e36314ab5bc25c85a9.png

简单分析了一下代码,

并模仿它写一个图标类和简单的使用示例:

2430a2dc759024529dc5799447873c7e.png

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>/// 关闭按钮/// </summary>Close,/// <summary>/// 最小化按钮/// </summary>MinSize,/// <summary>/// 普通最大化按钮/// </summary>MaxSize,/// <summary>/// 全屏后最大化按钮/// </summary>MaxToNormal,/// <summary>/// 设置按钮/// </summary>Setting,/// <summary>/// 五角星/// </summary>Star,}
}

还有大部分控件类代码,都放在仓库内,自取。

扩展也很简单,使用时,取得path后,添加新图标到IconKey 和IconKeyDic内就可以了,对于不想引用类库又想用的人,还行。

效果图:

c249fe649816b1412d8104a6d9aff038.png

【原创】转载请注明出处。

【加群】要加入 WPF UI 微信群的,可以添加我的微信。

【资源】代码仓库地址:https://gitee.com/gxygitee/pub.git

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/295369.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java线程死锁 cpu 100%_一文学会Java死锁和CPU 100% 问题的排查技巧

做一个积极的人编码、改bug、提升自己我有一个乐园&#xff0c;面向编程&#xff0c;春暖花开工欲善其事&#xff0c;必先利其器00 本文简介作为一名搞技术的程序猿或者是攻城狮&#xff0c;想必你应该是对下面这两个问题有所了解&#xff0c;说不定你在实际的工作或者面试就有…

3D版的TagView,效果很赞

在gitHub看到的&#xff0c;感觉效果不错。 看看效果&#xff1a; Demo&#xff1a;http://download.csdn.net/detail/u012808234/9426716

Nginx配置相关结构划分的技巧和禁止IP访问

Nginx配置相关结构划分的技巧原文来自&#xff1a;http://developer.51cto.com/art/201003/190953.htm Nginx配置需要一定的技巧&#xff0c;我们在不断的使用和维护中就会发现这些&#xff0c;接下来就向大家介绍下有关Nginx配置的相关技巧。我目前的Nginx配置是拆散的&#x…

5部高分学科纪录片,在家也能受益良多!

全世界只有3.14 % 的人关注了爆炸吧知识▌导读本文为同学们整理了5部高分经典学科纪录片&#xff0c;这不仅是课堂学习的补充与延伸&#xff0c;更是开拓视野、激发学习内驱力的绝佳利器。建议收藏&#xff01;&#xff08;关注视频号少年数学家&#xff0c;呈现最直观的数学&a…

ubuntun中文读书笔记

在Linux中&#xff0c;所有设备都是用文件名来表示的。Linux中只有文件和目录&#xff0c;所有的文件和目录都以倒树状结构挂载在”/”(根目录)目录下。在Linux中如果要执行以命令可以通过 # 命令名 [-选项] 参数。在命令名、选项或者参数之间都是至少要有一个空格&#xff0c;…

开发Android应用 提升性能的小技巧

前  言 2015年&#xff0c;Android OS 目前在手机操作系统的市场占有率已达59%&#xff0c;权威机构预计&#xff0c;Android市场占有率在2016年将达到63%&#xff0c;由于Android的开放性&#xff0c;未来占有率还将不断增加&#xff0c;Android的NDK支持C/C语言&#xff0c…

SQL Server 中使用 Try Catch 处理异常

1 CREATE TABLE ErrorLog(2 errNum INT,3 ErrSev NVARCHAR(1000),4 ErrState INT,5 ErrProc NVARCHAR(1000),6 ErrLine INT,7 ErrMsg NVARCHAR(2000)8 )9 10 CREATE PROCEDURE ProcErrorLog 11 AS 12 BEGIN 13 SELECT 14 ERROR_NUMBER() AS ErrNum,--返回导致运…

Hibernate 对象的三种状态

Hibernate 对象的三种状态 瞬时&#xff08;transient&#xff09;: 由new操作符创建&#xff0c;且尚未与Hibernate Session关联的对象被认定为瞬时&#xff08;Transient&#xff09;的。瞬时&#xff08;Transient&#xff09;对象不会被持久化到数据库中&#xff0c;也不会…

升级Jenkins镜像,支持.NET6.0

&#xff08;寒天催日短&#xff0c;风浪与云平&#xff09;书接上文&#xff0c;上回咱们说到了《【Blog.Core开源】完成升级.NET 6.0》&#xff0c;只是代码层面的升级&#xff0c;今天趁着周末正好把生产环境也升级下&#xff08;大家可以酌情升级哟&#xff09;。过程很简单…

女朋友来大姨妈怎么办?

1 医生的工伤怎么算&#xff1f;&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 大风车呀吱悠悠的转&#xff01;&#xff08;via&#xff1a;草多南&#xff09;▼3 买了个丑酸奶&#xff01;▼4 和老爸讨论谈恋爱&#xff08;via&#xff1a;张子乐_&#xff0…

[转]android 获取手机GSM/CDMA信号信息

本文转自&#xff1a;http://software.intel.com/zh-cn/blogs/2011/12/16/android-gsmcdma/ 在Android中我们常用的轻松获取WIFI信号列表&#xff0c;那如何获取CDMA或者GSM的手机信号呢&#xff1f;系统提供了TelephonyManager类&#xff0c;此类非常丰富&#xff0c;基本你所…

数码管流动显示(自己的单片机)

/********************************************************************************** * 标题: 试验数码管上显示数字( 单片机直接实现位选 共阴极) * * * * …

Hibernate懒加载

在Hibernate框架中&#xff0c;当我们要访问的数据量过大时&#xff0c;明显用缓存不太合适&#xff0c; 因为内存容量有限 &#xff0c;为了减少并发量&#xff0c;减少系统资源的消耗&#xff0c;这时Hibernate用懒加载机制来弥补这种缺陷&#xff0c;但是这只是弥补而不是用…

迪拜“烧掉800亿”造了座烂尾岛,奇葩建筑惊呆网友:有钱人的世界,我不懂!

全世界只有3.14 % 的人关注了爆炸吧知识来源&#xff1a;普象工业设计小站天呐&#xff01;最新消息阿布扎比酋长国又发现220亿桶非常规可采石油让原本富有的国家更加钱上有钱尤其是它的兄弟国——迪拜简直“豪”无人性耗资800亿美元的“世界岛”惨成全球最大烂尾项目竟没有表示…

英特尔收购威盛X86业务 兆芯何去何从

日前&#xff0c;英特尔公司以1.25亿美元收购威盛麾下Centaur 公司的x86业务。Centaur 是威盛的一家子公司&#xff0c;20多年前&#xff0c;威盛依靠数笔收购获得了x86授权&#xff0c;开发了数款X86芯片&#xff0c;由于性能与英特尔和AMD差距太大&#xff0c;威盛的X86 CPU在…

.net中的mapinfo开发:准备(一)

最近开发一个项目&#xff0c;用到了mapinfo的开发&#xff0c;所以想把自己研究的一些东西记录下来&#xff0c;一则供自己使用&#xff0c;二则供一些同道中的朋友参考&#xff0c;有什么不当之处&#xff0c;请提示&#xff0c;再做修改。 首先要了解一下mapinfo的基本概念&…

研究生计划-心得征程

以前定过一个计划&#xff0c;现在觉得有必要在重新规划一次&#xff0c;毕竟见识和认识有深了 1、编译原理&#xff0c;前些天是把数据结构写完了&#xff0c;编译原理也一直没看&#xff0c;所以下一步深入学习编译原理 2、学习PHP框架&#xff0c;像wordpress和yii,PHP也算入…

java launcher 下载_Java Launcher下载并安装

通过双击资源管理器中的类文件来运行Java程序&#xff0c;并创建一个EXE和可执行的JAR文件Java启动器通过双击类文件来运行Java应用程序和小程序. 通过右键单击以图形格式查看类源代码和类层次结构&#xff1b;显示jar和zip文件的内容java下载安装&#xff0c;而不是通过右键单…

自带数据线的迷你数显充电宝,好用到哭

▲ 点击查看无论是付钱办事坐车&#xff0c;还是游戏追剧闲聊&#xff0c;有个手机就够了啊~这也就导致了&#xff0c;出门最怕的不是没带钱&#xff0c;而是带了手机却没电了。手机没电&#xff01;这简直能要了老命啊&#xff01;幸好有充电宝“续命”&#xff01;但每回在打…

值得永久收藏的 C# 设计模式套路(二)

设计模式套路&#xff0c;第二弹。在第一篇中&#xff0c;主要写了创造模式相关的几种套路。如果你是刚看到这个文章&#xff0c;建议你先去看看第一篇 传送门。这一篇&#xff0c;我们说说结构模式相关的套路。结构模式&#xff0c;主要作用是将类型、对象和其它内容放在一起&…