一、XAML元素理解
注:以开发工具Visual Studio 2015为例
1.XAML三个*元素:
Window(窗体)、UserControl(用户控件)(用户控件,布局的时候像窗体那样布局就可以了)、Page(页)把窗体以网页形式展现。而一个XAML页面里只能有一个*元素。而*元素里面只能有一个子元素。因此要有布局控件。
(1)、如*元素为Window(窗口),如果需要嵌套式的页面而窗口是不能够嵌套窗口的所以需要添加一个“用户控件”。
(2)、*元素Page(页)和*元素UserControl(用户控件)没有太大的区别,都是以页面为主。
(3)、*元素决定了XAML文件属于什么类型文件,
二、Window窗体属性
1.决定外观的属性
(1)、WPF中默认窗口框架的外观,主要取决于:Icon(指定窗口的图标)、Title(指定窗口的标题)、WindowStyle(指定窗口样式:None、SingleBorderWindow、ThreeDBorderWindow、ToolWindow)、ResizeMode(是指定大小调节样式:NoResize、CanMinimize、CanResize、CanResizeWithGrip)等属性。
(2)、Icon(指定窗口的图标):在项目中添加存放logo的文件夹,在前台页面上通过“Icon”引用文件夹以及图片名称,决定了项目的最终图标。
(3)、Title(指定窗口的标题):决定了项目最终名称。
2.WindowStyle(指定窗口样式)
(1).None(无边框):(当ResizeMode属性为NoResize时,仅剩下窗口核心) 在原来的样式基础上,把全部内容都掩盖只显示一个空白窗口。
(2).SingleBorderWindow(单边框【默认】)、ThreeDBorderWindow(3D边框):在原基础上没有什么变化。
(3).ToolWindow(工具箱窗口):只有关闭按钮,没有放大缩小和最小化按钮。
3.ResizeMode是指定大小调节样式,有4个取值:
(1).NoResize,不可调节,同时没有最大最小按钮;
(2).CanMinimize,不可调节。但可以最小化;(此时最大化按钮不可用)
(3).CanResize,可调节【默认】;
(4).CanResizeWithGrip,可根据网格调节;(窗口右下脚显示可调节网格)
2.决定窗口位置的属性
1.WindowStartupLocation指定窗口初始位置,有3个取值:
(1)、Manual,手工指定位置,表示可以通过设置其Top、Left属性值来决定窗口的初始位置;
(2)、CenterScreen,屏幕*;
(3)、CenterOwner,父窗体*;Topmost调节窗口的前后顺序,属性值为true时,窗
口位于最前。
例:
2.(1)、Topmost值为true的窗口,位于Topmost值为false的窗口之前;
(2)、Topmost值都为true的窗口,获得焦点的窗口位于前。
3.决定窗口的大小属性
Width、Height,分别表示窗口的宽度和高度,称为“尺寸属性”。
MaxWidth、MinWidth、MaxHeight、MinHeight,分别表示窗口最大宽度、最小宽度、
最大高度、最小高度。可以通过得到和更改这些属性值,来获取和改变窗口的大小和长
宽范围。
ActualWidth、ActualHeight,分别表示窗口的实际宽度和实际高度,称为“实际尺寸
属性”。
实际尺寸属性是根据当前窗口大小、最小化时窗口大小和最大化时窗口大小来计算得到
的,其值是只读的,也就是说,不能通过改变ActualWidth、ActualHeight的值来更改窗
口大小。
SizeToContent,表示窗口大小由内容决定,有4个取值:
Manual,手工【默认】;
Width,窗体宽度由内容决定;
Height,窗体高度由内容决定;
WidthAndHeight,窗体大小由内容决定;
如果内容尺寸超过了窗口的最大或最小范围,还是以最大/最小范围为主。如果手工指定
了窗口的Width、Height 属性,那么SizeToContent将被忽略。
4. 窗口的可见性和状态
Visibility,窗口可见性,有4个枚举值:
Visible,可见;
Hidden,隐藏;
Collapsed,折叠。
虽然窗口类认为Collapsed与Hidden一样,但二者区别在于,Hidden仅仅将元素设为不可
见,但是元素在画面上依然占有空间;而Collapsed,在不可视的基础上,能将元素在画
面上的占位符清除,元素彻底不影响画面。Show、Hide,显示窗口和隐藏窗口的两个方法。
如果窗口的ShowInTaskbar属性值为true,Hide不但隐藏窗口本身,同时隐藏其在任务栏
上的图标。
WindowState,窗口状态属性,有3个枚举值:
Normal,正常;
Maximized,最大化;
Minimized,最小化;
(2)、RestoreBounds,获取窗口在最小化或最大化之前的大小和位置,有4个枚举值,Top
上、Left左、Width宽、Height高。
(3)、只有窗口在Normal状态下移动或调整时,RestoreBounds的值才会改变。于是可以在窗口关闭时将RestoreBounds属性值保存到配置文件,下一次启动程序窗口时,读取上次
保存的窗口大小、位置,来初始化窗口,以此实现保存用户配置等功能。
5. 窗口的生命周期
关于各事件的描述:
(1)、Initialized:当窗口的FrameworkElement底层初始化时触发,即InitializeComponent方
法调用时触发。
(2)、LocationChanged:窗口被移动时触发:前台页面默认文本,在后台页面改变文本,打开窗口时显示前台文本,当窗口被移动时文本变成后台文本。
(3)、Activated:窗口被激活时触发:在窗口打开的时候直接调用后台改变的文本。
(4)、Deactivated:窗口处于非激活时(即其他窗口处于激活时)触发。
(5)、Loaded:显示窗口之前触发:不需要进行点击操作在窗口加载出来之前自动显示。
(6)、ContentRendered:当内容显示的时候触发。
(7)、Closing:尝试关闭窗口时触发,可以将参数CancelEventArgs的Cancel的属性设置为 true,取消关闭操作。
(8)、Closed:在窗口关闭后触发该事件,无法取消。
(9)、Unloaded:当关闭窗口并且从可视化树移除后触发