原文:示例:自定义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 如有解决方案程序集无法加载请安装这两个框架

示例:自定义WPF底层控件UI库 HeBianGu.General.WpfControlLib V2.0版本的更多相关文章

  1. WPF开源控件扩展库 - MaterialDesignExtensions

    Material Design Extensions 在WPF开源控件库 Material Design in XAML Toolkit(本站介绍:链接)的基础上进行了控件扩展和特性新增.本开源项目中 ...

  2. 自定义WPF分页控件

    一.分页控件功能说明 实现如上图所示的分页控件,需要实现一下几个功能: 可以设置每页能够展示的最大列数(例如每页8列.每页16列等等). 加载的数组总数量超过设置的每页列数后,需分页展示. 可以直接点 ...

  3. 自定义WPF Popup控件

    解决问题 1.WPF Popup 不随着 Window 一起移动的问题 2.WPF Popup 总是显示在最前面 引用命名空间 xmlns:ctrl="clr-namespace:Micro ...

  4. WPF自定义控件与样式(8)-ComboBox与自定义多选控件MultComboBox

    一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: 下拉选 ...

  5. 【转】WPF自定义控件与样式(8)-ComboBox与自定义多选控件MultComboBox

    一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等. 本文主要内容: 下拉选择控件ComboBox的自定义样式及扩展: 自定义多选控件Mul ...

  6. WPF 自定义ComboBox样式,自定义多选控件

    原文:WPF 自定义ComboBox样式,自定义多选控件 一.ComboBox基本样式 ComboBox有两种状态,可编辑和不可编辑状态.通过设置IsEditable属性可以切换控件状态. 先看基本样 ...

  7. C# WPF开源控件库:MahApps.Metro

    其实站长很久之前就知道这个开源WPF控件库了,只是一直欣赏不了这种风格,但也star了该项目.每次浏览该仓库时,发现star越来越多,也看到很多网友对它的褒奖,所以今天就向大家推荐这款WPF控件库. ...

  8. WPF自定义选择年月控件详解

    本文实例为大家分享了WPF自定义选择年月控件的具体代码,供大家参考,具体内容如下 封装了一个选择年月的控件,XAML代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...

  9. WPF滑块控件(Slider)的自定义样式

    前言 每次开发滑块控件的样式都要花很久去读样式代码,感觉有点记不牢,所以特此备忘. 自定义滑块样式 首先创建项目,添加Slider控件. 然后获取Slider的Window样式,如下图操作. 然后弹出 ...

随机推荐

  1. Vim文本编辑器详细用法

    1 Vi.Vim文本编辑器 1.Vi.Vim Vi是Visual interface的简称. Vim是Vi的增强版,即Vi Improved.在后面的实例中将介绍Vim的使用. 为什么学vi? 1)所 ...

  2. C#使用Xamarin开发移动应用 ---- 系列文章

    C#使用Xamarin开发移动应用 C#使用Xamarin开发可移植移动应用终章(11.获取设备信息与常用组件,开源一个可开发模版.) C#使用Xamarin开发可移植移动应用进阶篇(10.综合演练, ...

  3. Python面试题(4)

    1.Python下多线程的限制以及多进程中传递参数的方式 Python多线程有个全局解释器锁,这个锁的意思是任一时间只能有一个线程运用解释器.并发不是并行. 多进程间同享数据,能够运用multipro ...

  4. Python 文件读写操作实例详解

    Python提供了必要的函数和方法进行默认情况下的文件基本操作.你可以用file对象做大部分的文件操作 一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法.1.得到当前 ...

  5. Linux中的帮助文件

  6. 从三数之和看如何优化算法,递推-->递推加二分查找-->递推加滑尺

    人类发明了轮子,提高了力的使用效率. 人类发明了自动化机械,将自己从重复的工作中解脱出来. 提高效率的方法好像总是离不开两点:拒绝无效劳动,拒绝重复劳动.人类如此,计算机亦如是. 前面我们说过了四数之 ...

  7. ORA-01950:对表空间“”XXXX”无权限,解决办法

    上图报错 解决方案比如你要在用户(或SCHEMA)usera中建表,那么你用SYSTEM登录ORACLE后,执行如下SQL : ALTER USER 用户名 QUOTA UNLIMITED ON 表空 ...

  8. 深入js系列-类型(显式强制转换)

    什么是显式 这里的显式和隐式是以普遍的标准来进行讨论的,你能看出来是怎么回事,那么它对你是"显式",相反你不知道的话,对你就是"隐式" 抽象操作 字符串.数字. ...

  9. Linux】目录文件权限的查看和修改【转】

    转载自:http://zhaoyuqiang.blog.51cto.com/6328846/1214718 ============================================== ...

  10. node.js HTTP模块、URL 模块

    在浏览器输入存在的网址的一个交互过程 1.用户通过浏览器发送一个http的请求到指定的主机 2.服务器接收到该请求,对该请求进行分析和处理 3.服务器处理完成以后,返回对应的数据到用户机器 4.浏览器 ...