一.前言
申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接。
本文主要内容:
自定义Window窗体样式;
基于自定义窗体实现自定义MessageBox消息提示框;
二.自定义Window窗体样式
自定义的Window窗体效果:
因为WPF默认的窗体比较简陋,大都需要自己实现Window窗体样式效果,基本思路很简单:
第一步:干掉默认样式:WindowStyle = WindowStyle.None;
第二步:设置窗体透明:AllowsTransparency = true;
第三步:设置自己的窗体样式;
这样从外观样式上可以满足,但做为窗体该具备的基本功能还没有,需要另外来实现了:
窗体Icon、标题栏(可以通过样式实现); 窗体的基本按钮:最小化、最大化、关闭按钮; 窗体的鼠标拖动; 好像Win8、Win10的功能吧,窗体拖动到桌面边缘自动最大化、还原; 鼠标调整窗口大小; 双击标题栏最大化、还原;
进入正题,自定义窗体WindowBase的后台C#代码:
View Code
绑定命令的扩展方法:
WindowBase的样式有两个,一个是基础样式BaseWindowStyle,可以自定义头部标题栏,提供更多定制需求。另一个样式DefaultWindowStyle为默认窗体样式,用于大多数不要特别定制的窗体需求。BaseWindowStyle样式代码:
DefaultWindowStyle样式代码:
上面效果的背景色彩、边框的资源:
三.实现自定义MessageBox消息提示框
基于第二节自定义的窗体WindowBase,实现自定义的MessageBox就简单了,效果图:
仔细观察,不难发现上面的窗体大小是根据内容的多少自适应的。窗体自适应内容的的关键设置就是SizeToContent="WidthAndHeight",但为了达到更好的效果控制,还需要控制内容的大小范围,范围可以自己调整,看了样式代码你就了解了:
上面不同消息类型的颜色资源:
后台C#代码
附录:参考引用
<a href="http://www.cnblogs.com/anding/p/4961215.html" target="_blank">WPF自定义控件与样式(1)-矢量字体图标(iconfont)</a>
<a href="http://www.cnblogs.com/anding/p/4968050.html" target="_blank">WPF自定义控件与样式(2)-自定义按钮FButton</a>
<a href="http://www.cnblogs.com/anding/p/4970845.html" target="_blank">WPF自定义控件与样式(3)-TextBox & RichTextBox & PasswordBox样式、水印、Label标签、功能扩展</a>
<a href="http://www.cnblogs.com/anding/p/4976559.html" target="_blank">WPF自定义控件与样式(4)-CheckBox/RadioButton自定义样式</a>
<a href="http://www.cnblogs.com/anding/p/4979764.html">WPF自定义控件与样式(5)-Calendar/DatePicker日期控件自定义样式及扩展</a>
<a href="http://www.cnblogs.com/anding/p/4987426.html">WPF自定义控件与样式(6)-ScrollViewer与ListBox自定义样式</a>
<a href="http://www.cnblogs.com/anding/p/4990492.html">WPF自定义控件与样式(7)-列表控件DataGrid与ListView自定义样式</a>
<a href="http://www.cnblogs.com/anding/p/4993655.html" target="_blank">WPF自定义控件与样式(8)-ComboBox与自定义多选控件MultComboBox</a>
<a href="http://www.cnblogs.com/anding/p/4996614.html" target="_blank">WPF自定义控件与样式(9)-树控件TreeView与菜单Menu-ContextMenu</a>
<a href="http://www.cnblogs.com/anding/p/5006279.html">WPF自定义控件与样式(11)-等待/忙/正在加载状态-控件实现</a>
<a href="http://www.cnblogs.com/anding/p/5009120.html">WPF自定义控件与样式(12)-缩略图ThumbnailImage /gif动画图/图片列表</a>
个人能力有限,本文内容仅供学习、探讨,欢迎指正、交流。