窗体是WPF中最重要的一个呈现控件,它能够容纳其他的WPF控件,用户通常也是通过窗口来与WPF应用程序进行数据交互的。简单的说,WPF窗体就是应用程序的载体,承载了控件和用户数据展示。

WPF技术从传统Windows技术发展而来,WPF窗体也继承了很多WinForm窗体特性,同时又具有很多自己的个性,特别是在美观上能够请轻松制作出过去很难实现的炫酷效果。

 

  1. 窗体的组成




  2. 窗体的创建
  1. 物理窗体的创建

通过项目管理菜单添加新WPF窗体

wpf MaterialDesign 弹出窗口 遮罩_控件

这个只是创建的类(窗体的类)

  1. 窗体对象的创建(需要实例化

默认创建好的窗体是项目中的一个类不能直接使用,必须使用窗体名定义出窗体对象才能使用。即便对项目默认自动加载的窗体(App.XAML中或通过Program.CS中定义),其运行实际上也是先定义了对象再运行的。

定义格式:

窗体名窗体对象名=new 窗体名([可选的构造参数]);

wpf MaterialDesign 弹出窗口 遮罩_控件_02

  1. 窗体的声明周期

wpf MaterialDesign 弹出窗口 遮罩_App_03

  1. 窗体对象的状态和模式窗体的模式主要包括三个属性的应用
  2. 窗体的外观属性 WindowsStyle属性

wpf MaterialDesign 弹出窗口 遮罩_WPF_04

wpf MaterialDesign 弹出窗口 遮罩_WPF_05

3D边框,推荐默认使用。

(5)窗体间的传值(数据传递)

WPF窗体之间要实现数据传递可以采用如下四种方式:

(1)声明个全局变量,就是App.xaml里面声明;在所有窗体里面都可以引用Application.Current.Properties["ArgumentName"]。

(2)第二个就是在目标窗体上面公开个属性,直接赋值;

(3)在Uri里面传参数NavigationService.Navigate(window object,argument value);

(4)定义一个静态类,所有窗体都可以访问静态类的静态数据成员。

推荐第一个和第四个方法

3、不规则窗体

不规则窗体顾名思义就知道这种窗体是不同于传统的矩形窗体的,它们可以是各种奇怪的形状,三角形、圆形、还有各种位图造型。使用不规则窗体,WinForm和WPF均可实现,不过相对传统Winform较为麻烦些,需要调用Windows API,而且效率还不高,现在如果使用WPF则相对简单的多。

wpf MaterialDesign 弹出窗口 遮罩_WPF_06

实现WPF不规则窗体的几种常用的方法如下:

使用Blend等工具绘制一想要的窗体。

使用Blender制作想要的Path的说明。

给window的Clip属性赋Path值。

使用透明背景的PNG图像。

为Window主容器添加Border