原文:示例:自定义WPF底层控件UI库 HeBianGu.General.WpfControlLib V2.0版本
一、目的:封装了一些控件到自定义的控件库中,方便快速开发
二、实现功能:
基本实现常用基础控件,满足常规软件快速开发
同时支持框架.Net Core 3.0 + ,.Net FrameWork 4.5+
三、整体概况
1、登录页面:
登录页面只需要继承LoginWindowBase基类,并且设置样式 Style="{StaticResource S.Window.Login.Default}"即可
2、主页面:
主页面只需继承LinkWindowBase基类,并且设置样式Style="{DynamicResource S.Window.Link.Default}"即可
整体主窗口采用ViewBox方式加载,当缩放窗口或应用到到其他分辨率设备都会兼容
3、主题配置信息保存
主题配置信息已经封装在ApplicationBase中,会自动在退出时保存设置好的配置信息(如:主题颜色、字体大小等)
总结:应用此模式可以达到复用的目的,将通用部分封装到底层,如需修改样式只需修改Style样式文件或修改依赖属性即可满足功能修改
四、主题设置
浅色主题示例如下:
深色主题示例如下图:
主题设置功能主要包括:
1、设置主题主颜色
主题颜色主要用来标识要突出显示的部分,目前可以选择内置颜色、可以选择跟随系统主题颜色、可以自定义选择颜色、可以使用动态主题(即设置主题每隔指定时间自动变化)
2、设置主题
主题目前实现四中主题,分别是浅色主题、深色主题、灰色主题、主颜色为主题
3、设置字体大小
字体大小目前内置两种,分别是Large和Small,其中这两种颜色采用注入的方式加载,即可以在程序加载时设置着两种字体的初始值
4、其他配置
包括中英文、设置标准行高等等可以在程序加载时进行初始化设置,这里不做过多介绍
总结:这样设计的目的是审美因人而异,使用自定义配置的方式可以尽可能多的满足多变的需求
五、其他基础控件
1、数据表格
a、兼容主题字体和主题设置,后面将要提到的所有控件均已应用主题设置,不做再说明
b、每页显示条数
可以设置每页要显示的条数
c、搜索
可以设置搜索过滤条件,包含指定搜索项的条目才会显示
d、页面跳转
可以上一页、下一页、第一页、最后一页、指定页
e、页面信息
当前页属于数据源的第几条至第几条,数据源的总条目数
f、两种风格的网格页面
总结:以上功能封装在控件PagedDataGrid中,只需绑定数据源即可实现以上功能,其中打印、导出等功能暂时没有实现
2、树形列表
a、支持按类别筛选
如上图、选择指定类型来过滤列表
b、支持按条件搜索
如上图、输入条件可以过滤指定条件
总结:使用方式为绑定数据源到TreeListView控件中
3、其他常用控件
a、对话框
采用内置对话框,不是应用窗口,只是覆盖层,可以避免窗口对话框引起的一些问题
b、对话窗口自定义对话窗口
相对系统对话窗口更美观,增加显示和隐藏效果,通过注入的方式可以自定义按钮个数和功能
c、消息列表
目前有两种模式,分别是在窗口内显示和Window系统中显示,可以根据需求自定义显示方式,示例如下
d、在线升级示例如下
e、导航菜单示例如下
f、其他功能包括
按钮控件、文本输入框控件、下拉列表控件、数字控件、日期选择控件、支持绑定的密码框控件、进度条控件、拖动控件、树形控件、分页控件以及其他自定义控件
以上控件均已实现主题颜色、字体大小切换等,可以满足常用软件的功能
其中整体结构使用的自定义Mvc方式加载,参考地址:https://blog.csdn.net/u010975589/article/details/100019431
由于控件过多不做详细介绍,有兴趣的可以下载源码或加载nuget包
六、使用方式
nuget包添加如下图
说明:此示例部分功能参考第三方框架,开源只应用于学习和参考,不做商用目的
前一阵心血来潮测试了一下将此框架迁移到.net core 3.0也没问题,后续会更新.net core 3.0版本
应用此框架的其他示例:
七、下载地址
GitHub下载地址:https://github.com/HeBianGu/WPF-ControlBase.git
安装包示例下载地址:
链接:https://pan.baidu.com/s/1y2UfDKIxoSOffj36gl7fOw
提取码:l2ia
更新:2019.12.16 增加.Net Core 3.0
目前已支持Core3.0 和.net 4.5 如有解决方案程序集无法加载请安装这两个框架