上一次,和大家说到了wpf中的基本控件中的Window控件的外观,现在再次和大家重温一下什么是基本控件,控件基本它区分为六类,今天,给大家讲解的就是六类里的内容控件里的Window(窗口)控件。相信学过wpf框架的人都知道内容控件是指只能容纳一个控件或布局控件并作为内容的控件,它们是来规划内容,父类都是ContentControl。
因WPF框架是采用XAML语言来控制布局,且在XAML页面中只能有一个顶级元素和顶级元素里只能有一个子元素,顶级元素分别是Window(窗口)、UserControl(用户控件)、page(页)。
掌控Window(窗口)控件,就要从Window控件的外观、位置、大小、可见性和状态、生命周期出发,它们都可以通过设置相应的属性来调节。而今天给大家讲解的是Window控件的位置、大小的含义和用法。为了大家更好的理解Window控件的用法,我分别创建两个窗口来给大家演示一下,分别用窗口一、窗口二给它命名。首先,从窗口的位置方法开始讲解,有关窗口的位置的属性有两个,分别是WindowStartLocation和TopMost。
WindowStartLocation是指定窗口初始位置,也就是说在运行该窗口时,该窗口开始出现在什么位置,这位置是相对与不同的参照物得出来的,参照物可以是电脑屏幕、父窗体。WindowStartLocation的属性取值有三个,属性值是Manual、CenterScreen、CenterOwner。
Manual是手动指定位置,把窗口放在设置Top(上)的值和Left(左)的值上,这就像数学上以屏幕右上角为原点和只有第二象限的坐标轴。但它没有Bottom(下)和Right(右);CenterScreen是把窗口放在电脑屏幕的最中央,不用去设置Top的值和Left的值,这比较方便与美观一些; CenterOwner是把子窗口放在父窗体中央,什么是父窗体?父窗体就是某个窗体的上一级的窗体,而这个某个窗体就是上一级的窗体的子窗体,一般的话,子窗体是位于父窗体的前面的,但这种情况不是绝对的,而是相对的、可改变的。这种情况就与下一个属性TopMost有关了,
TopMost是可以调节窗口的前后位置的属性,这不受子窗体和父窗体的关系的影响,当窗口的TopMost值为ture时,它位于最前面;当窗口的TopMost值为flase时,那它就位于TopMost值为ture的窗口的后面;可如果有两个窗口的TopMost值为ture时,哪该谁先谁后呢?当遇到这种情况时,哪个窗口获得焦点,哪个窗口就在前面,获得焦点就是最先被启动或运行。如窗口一、窗口二所示
窗口一的代码如下:
<Window x:Class="WpfApplication资源和事件.Window1"xmlns=“http://schemas.microsoft.com/winfx/2006/xaml/presentation”
xmlns:x=“http://schemas.microsoft.com/winfx/2006/xaml”
WindowStartupLocation=“CenterScreen”
Topmost=“False”
MaxHeight=“350” MaxWidth=“430”
MinHeight=“300” MinWidth=“200”
ShowInTaskbar=“True”
Visibility=“Visible” WindowState=“Minimized”
Title=“Window1” SizeToContent=“WidthAndHeight”>
窗口二的代码如下:
<Window x:Class="WpfApplication资源和事件.Window4"xmlns=“http://schemas.microsoft.com/winfx/2006/xaml/presentation”
xmlns:x=“http://schemas.microsoft.com/winfx/2006/xaml”
xmlns:d=“http://schemas.microsoft.com/expression/blend/2008”
mc:Ignorable=“d”
WindowStyle=“SingleBorderWindow”
WindowStartupLocation=“CenterOwner”
Topmost=“True”
Height=“100” Width=“266”>
接下来介绍的是Window(窗口)大小的方面了,Width、Height属性都是大家很熟悉,就不介绍了,但要记住它们称为“尺寸属性”。还有就是MaxWidth(最大宽度)、MinWidth(最小宽度)、MaxHeight(最大高度)、MinHeight(最小高度),可以通过得到和更改这些属性值,来获取和改变窗口的大小和长宽范围。再有ActualWidth(实际宽度)和ActualHeight(实际高度)属性,它们被称为“实际尺寸属性”,只有只读性,不可以改变。这是在后台类文件里才能获取到的,尺寸属性和实际尺寸属性是有差别的,实际尺寸属性是指在我这个电脑屏幕里实际的尺寸,尺寸属性是你给窗口设置的尺寸,就如窗口二的宽是266,但实际的宽是266.4。最后SizeToContent属性是窗口大小由内容决定,它的取值有Manual(手工,默认)、Width(宽度由内容决定)、Height(高度由内容决定)和WidthAndHeight(大小由内容决定);就如窗口一的大小由内容决定的。
这里就要注意一下了,如果是手工指定了窗口的Width、Height的属性,那么SizeToContent属性将被忽略掉。
总效果图如下: