窗体类基本概念
对于WPF应用程序,在Visual Studio和Expression Blend中,自定义的窗体均继承System.Windows.Window类。
用户通过窗口与 Windows Presentation Foundation (WPF) 独立应用程序进行交互。
窗口的主要用途是承载可视化数据并使用户可以与数据进行交互的内容。
独立 WPF 应用程序使用 Window 类来提供它们自己的窗口。在 WPF 中,可以使用代码或 XAML 标记来实现窗口的外观和行为。
我们这里定义的窗体也由这两部分组成:
1、XAML文件,在这里面通常全部写UI的东西,包括窗口的外观,控件等。
2、窗口界面中的各种行为,则由后台代码文件决定。
现在要介绍的WFB Window 窗体属性
1.窗口的外观
WPF中默认窗口框架的外观,主要取决于Icon、Title、WindowStyle、ResizeMode等属性。
Icon 指定窗口的图标;
Title 指定窗口的标题;
WindowStyle指定窗口样式,有4个取值:
None,无边框;(当ResizeMode属性为NoResize时,仅剩下窗口核心。)
SingleBorderWindow,单边框【默认】;
ThreeDBorderWindow,3D边框;
ToolWindow,工具箱窗口
ResizeMode是指定大小调节样式,有4个取值:
NoResize,不可调节,同时没有最大最小按钮;
CanMinimize,不可调节。但可以最小化;(此时最大化按钮不可用)
CanResize,可调节【默认】;
CanResizeWithGrip,可根据网格调节;(窗口右下脚显示可调节网格)
2.窗口的位置
WindowStartupLocation指定窗口初始位置,有3个取值:
Manual,手工指定位置,表示可以通过设置其Top、Left属性值来决定窗口的初始位置;
CenterScreen,屏幕中央;
CenterOwner,父窗体中央; Topmost调节窗口的前后顺序,属性值为true时,窗口位于最前。
Topmost值为true的窗口,位于Topmost值为false的窗口之前;
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,最小化;
了解就好:
RestoreBounds,获取窗口在最小化或最大化之前的大小和位置,有4个枚举值,Top 上、Left左、Width宽、Height高。
该主窗口的Top:75,Left:75,Width:525,Height:350
只有窗口在Normal状态下移动或调整时,RestoreBounds的值才会改变。于是可以在窗口关闭时将RestoreBounds属性值保存到配置文件,下一次启动程序窗口时,读取上次保存的窗口大小、位置,来初始化窗口,以此实现保存用户配置等功能。
MSDN上的例子:http://msdn.microsoft.com/zh-
cn/library/system.windows.window.restorebounds.aspx 。
获取窗口在最小化或最大化之前的大小和位置。
1 //属性值:Rect。一个 Rect,指定窗口在最小化或最大化之前的大小和位置。
2 public System.Windows.Rect RestoreBounds { get; }
XAML
下面的示例使用 RestoreBounds 和独立存储来确保窗口的大小和位置与上一次显示窗口时的大小和位置相同。