一个好看的WPF开源控件库——PanuonUI自定义样式控件库

PanuonUI

这是一个开源项目,版权归本喵所有。该开源项目遵循Apache2.0许可协议,简单点说就是不限制使用途径(商业也可以用),但不允许抄袭。
GitHub传送门:https://github.com/Ruris/PanuonUI

本开源库目前仍处于开发中,代码请自行克隆研究。本系列的博客是解说自定义依赖属性的。该库依旧在更新中,用的爽的话别忘了Star一下哈。
目前已有的控件:
(截止2018.5.10,共有7个)
ScrollViewer
Window、MessageBox
Button、TextBox、CheckBox、RadiuButton

正在制作:PasswordBox、BarChart
项目内的控件浏览器程序使用了Caliburn.Micro作为解耦工具,看不懂也不会影响使用。
除此之外,项目还使用了FontAwesome字体(嵌入在示例项目中)。

(0)PUWindow 窗体控件

这是一个融合了遮罩层、动画渐入渐出的窗体控件。
PanuonUI Browser是一个派生自PUWindow的窗体。
如下图的示例所示,通过点击按钮打开一个PUMessageBox控件(该控件同样继承自PUWindow,并且调用该控件的窗口也必须为PUWindow,否则会抛出异常)。在使用PUMessageBox的时候不需要设置遮罩层,调用ShowDialog的时候它会自动打开父窗体的遮罩层。
这里写图片描述
通常情况下,我建议关闭主窗体的启动动画,或者打开把主窗体的ShowDelay属性设为True。在上面的GIF中看到的就是主窗体ShowDelay为True的状态,启动时页面是白色的,动画执行完才会显示内容。这样可以保证启动动画不会卡顿。
你可以像下面这样使用它:

<pu:PUWindow 
    ...
    xmlns:pu="clr-namespace:Panuon.UI;assembly=Panuon.UI"
    ...
    Title="HelloWorld!" Height="450" Width="800" AnimationStyle="Gradual" ShowDelay="True">
    <pu:PUWindow.Icon>
        <TextBlock Text="" FontSize="20" FontFamily="{StaticResource FontAwesome}"></TextBlock>
    </pu:PUWindow.Icon>

</pu:PUWindow>

AnimationStyle:表示动画类型,AnimationStyles枚举类型,包括Scale(缩放,默认的)、Gradual(渐变画刷,示例例中使用的,类似于QQ启动时)、Fade(淡入淡出)。
AnimateInAnimateOut:表示开/关启动关闭动画,bool类型,默认值都为True(开启)。
ShowDelay:表示延迟显示内容,bool类型,默认值为False(不延迟显示)。
NavbarHeightNavButtonHeightNavButtonWidthNavButtonBackground:表示控制栏的高度、控制栏按钮的高度、控制栏按钮的宽度、控制栏的背景色。前三者为double类型,默认值分别为30、30、40;背景色为SolidColorBrush类型,默认值为White。
Header:WPF的Title属性会同时作用于任务栏名称和左上角的名称。当你希望他们不同时,可以通过单独设定Header属性来指定左上角的标题。如果不设置(Header的默认值是null),左上角标题仍会与任务栏名称共用Title属性。
Icon:表示显示在左上角标题前的图标,object类型,因此你可以将其设定为任何元素(比如图片)。
BorderCornerRadius:圆角大小,CornerRadius类型,可以像Thickness一样进行设置,默认值为0。
ShowCover:显示遮罩层,bool类型,默认值为False。将其设置为true,将会动画渐入遮罩层。
HideNavButtons:隐藏右上角的三个按钮,bool类型,默认值为False。如果你只是想禁用最大化和最小化按钮,只需要修改ResizeMode属性即可。

(1)按钮篇

这里写图片描述

这些控件实际上是同一种控件,只是通过设置属性改变了效果而已。我添加的自定义依赖属性有三个。
ButtonStyle:
按钮样式,ButtonStyles枚举类型,包括General(默认值),Hollow和Outline
BorderCornerRadius:
圆角大小,CornerRadius类型,可以像Thickness一样进行设置,默认值为0
CoverBrush:
鼠标悬浮时的遮罩层颜色,SolidColorBrush类型,默认值为白色(General)、灰黑色(Hollow和Outline)

(2)输入框

这里写图片描述
TextBoxStyle:
输入框样式,TextBoxStyles枚举类型,包括General(默认的)和IconGroup两个
BorderCornerRadius:
圆角大小,CornerRadius类型,默认值为0
ShadowColor:
输入框激活时的阴影颜色,Color类型,默认值为灰色。
WaterMark:
输入框的水印,String类型,默认值为空。
Icon:
IconGroup样式下输入框前面的图标,string类型,仅支持FontAwesome字体。
IconWidth:
IconGroup样式下输入框前面的图标宽度,double类型,默认值30。

(3)CheckBox复选框

这里写图片描述
CheckBoxStyle:
复选框样式,CheckBoxStyles枚举类型,包括General(默认值),Switch和Branch
BorderCornerRadius:
圆角大小,CornerRadius类型,可以像Thickness一样进行设置,默认值为0 (Switch样式的CornerRadius是自动计算的,不需要手动输入)
InnerHeight和InnerWidth:
内部选择框的长和宽,double类型,默认值为20(Switch样式的默认值分别为25和30)
CoverBrush:
鼠标悬浮时的遮罩层颜色,SolidColorBrush类型,默认值为灰黑色(Swtich样式的背景色是由Background设置的,此属性对其无效。)

(4)RadioButton单选按钮

这里写图片描述
RadioButtonStyle:
单选按钮样式,RadioButtonStyles枚举类型,包括General(默认值),Switch和Branch
BorderCornerRadius:
圆角大小,CornerRadius类型,默认值为10(Switch样式的CornerRadius是自动计算的,不需要手动输入)
InnerHeight和InnerWidth:
内部选择框的长和宽,double类型,默认值为20(Switch样式的默认值分别为25和30)
CoverBrush:
鼠标悬浮时的遮罩层颜色,SolidColorBrush类型,默认值为灰黑色(Swtich样式的背景色是由Background设置的,此属性对其无效。)

已标记关键词 清除标记
相关推荐
之前三此发的http://download.csdn.net/detail/maiker/9621027可以作废,本次为最新的,其中测试了历史曲线的动态显示,这是对Microsoft WpfToolkit的更新和扩展: 1、将版本升级到.NET 4.6.1,对命名控件进行了替换处理 2、实现了单数据Chart图的混合颜色显示,可通过修改资源字典调整和添加颜色 3、可控制各种Chart图形的数据值显示 4、坐标轴文本可倾斜显示 5、添加了StepLine图和圆环图,圆环半径比例系数可设定,同时添加了饼图的半径比系数,这样可以更好的控制饼图的标签显示,避免重叠 6、Legend可位于区域四侧,对齐方式也可以设定,以及是否显示, 可控制Chart Title是否显示 7、柱状图缝隙间隔可调整 8、全方面的加入了各种加载动画效果,动画效果可屏蔽,同时原系统自带动画效果,可叠加,这是两种不同的效果,可以互补性的单个使用 9、设计了四种主题颜色,各人可以针对图形颜色和背景色进行更好的搭配,在用户项目中,可以自己添加新的主题。 10、扩展了时间轴的应用,在新的DateTimeChart中可以通过鼠标平移和缩放时间轴,并测试了两个例子用于动态显示历史曲线,一个是外部定时更新,一个是内部定时更新 11、对LineDataPoint样式进行了设计,现在可以选择线图的点样式(如空心圆、五角星、三角形,矩形等),同时这些不同的点样式可以体现在Legend上,从而实现颜色和图形的双重区分。 总而言之,微软的控件做得很标准,还是很好修改的。 最后一直想在历史曲线中取消点动画(及默认的透明度动画),以便提高执行效率,但微软的那部分动画不熟,总是修改失败。 可以发邮件wuyang26@live.cn讨论。
ModernUI(http://mui.codeplex.com/)是一个开源WPF界面,利用该界面,我们可以创建很酷的应用程序。下面是ModernUI官方示例,你可以从官方网站直接下载源码运行,如果是.NET 4.0的话,记得要声明“NET4”预编译变量,否则无法编译通过。 这个界面框架是基于ModernUI来实现的,在该文我将分享所有的源码,并详细描述如何基于ModernUI来构造一个非常通用的、插件化的WPF开发框架。下载源码的同志,希望点击一下推荐。 本文将按照以下四点来介绍: (1)ModernUI简介; (2)构建通用界面框架的思路; (3)基于ModernUI和OSGi.NET的插件化界面框架实现原理及源码分析; (4)其它更有趣的东西~~。 要编写这样的WPF界面,我们需要在一个Window上声明菜单和Tab页面,下图是定义菜单的声明。 此外,每一个Tab风格页面,你也需要手动的为菜单创建这样的界面元素。 直接用这样的方式来使用ModernUI,显然不太适合团队协作性的并行开发,因为在一个团队的协作中,不同的人需要完成不同的功能,实现不同页面,每个人都需要来更改主界面。 我非常希望模块化的开发方法,因为这可以尽可能的复用现有资产,使程序员可以聚焦在自己关注的业务逻辑上,不需要关心UI的使用。下面,我将来描述基于ModernUI实现的一个通用界面框架,这个界面框架允许程序员在自己的业务模块中配置需要显示的界面元素。 通用界面框架实现思路: 我希望能够实现这样的通用界面框架: (1)程序员可以直接实现需要展现业务逻辑的界面,不需要关注如何使用ModernUI; (2)程序员可以通过简单的配置就可以将自己实现的业务逻辑页面显示在主界面中; (3)这个界面框架可以完全复用。 当我看到ModernUI这个界面时,我希望将应用程序做成模块化,每一个模块能够: (1)通过以下配置能够直接显示二级菜单。 (2)通过以下配置能够直接显示三级菜单。 这样做的好处是,开发插件的时候可以不需要关心界面框架插件;团队在协作开发应用的时候,可以独立开发并不需要修改主界面;团队成员的插件可以随时集成到这个主界面;当主界面无法满足我们的布局时或者用户需求无法满足时,可以直接替换主界面框架而不需要修改任何插件代码。 最终的效果如下,以下界面的几个菜单及点击菜单显示的内容由DemoPlugin插件、DemoPlugin2插件来提供。当插件框架加载更多插件时,界面上会出现更多的菜单;反之,当插件被卸载或者被停止时,则相应的菜单将消失掉。
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页