WPF自定义控件与样式(13)-自定义窗体Window & 自适应内容大小消息框MessageBox
Posted ljdong7
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF自定义控件与样式(13)-自定义窗体Window & 自适应内容大小消息框MessageBox相关的知识,希望对你有一定的参考价值。
一.前言
申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接。
本文主要内容:
- 自定义Window窗体样式;
- 基于自定义窗体实现自定义MessageBox消息提示框;
二.自定义Window窗体样式
自定义的Window窗体效果:
因为WPF默认的窗体比较简陋,大都需要自己实现Window窗体样式效果,基本思路很简单:
- 第一步:干掉默认样式:WindowStyle = WindowStyle.None;
- 第二步:设置窗体透明:AllowsTransparency = true;
- 第三步:设置自己的窗体样式;
这样从外观样式上可以满足,但做为窗体该具备的基本功能还没有,需要另外来实现了:
- 窗体Icon、标题栏(可以通过样式实现);
- 窗体的基本按钮:最小化、最大化、关闭按钮;
- 窗体的鼠标拖动;
- 好像Win8、Win10的功能吧,窗体拖动到桌面边缘自动最大化、还原;
- 鼠标调整窗口大小;
- 双击标题栏最大化、还原;
上面的功能在本文中,一部分是自定义实现的,还有一部分是用了一个开源库(Microsoft.Windows.Shell)用于实现窗体大小、拖放等窗体基本功能,Microsoft.Windows.Shell文件下载:点我下载。
进入正题,自定义窗体WindowBase的后台C#代码:
![技术图片](/img/jian.gif)
/// <summary>
/// WindowBase.xaml 的交互逻辑
/// </summary>
public class WindowBase : Window
{
#region 默认Header:窗体字体图标FIcon
public static readonly DependencyProperty FIconProperty =
DependencyProperty.Register("FIcon", typeof(string), typeof(WindowBase), new PropertyMetadata("ue62e"));
/// <summary>
/// 按钮字体图标编码
/// </summary>
public string FIcon
{
get { return (string)GetValue(FIconProperty); }
set { SetValue(FIconProperty, value); }
}
#endregion
#region 默认Header:窗体字体图标大小
public static readonly DependencyProperty FIconSizeProperty =
DependencyProperty.Register("FIconSize",