Window窗体以及WPF控件分类

一、Window窗体
1、XAML的三个顶级元素:
Window、UserControl、Page把窗体以网页形式展现。在 一个XAML页面里只能有一个顶级元素。而在顶级元素里面只能有一个子元素,因此要有布局控件。

2、Window窗体属性
①、窗体外观
WPF中默认窗口框架的外观,主要取决于Icon、Title、WindowStyle、ResizeMode等属性。
Icon 指定窗口的图标;
Title 指定窗口的标题;
WindowStyle指定窗口样式,有4个取值:
·None,无边框;(当ResizeMode属性为NoResize时,仅剩下窗口核心。)
·SingleBorderWindow,单边框【默认】;
·ThreeDBorderWindow,3D边框;
·ToolWindow,工具箱窗口
ResizeMode是指定大小调节样式,有4个取值:
·NoResize,不可调节,同时没有最大最小按钮;
·CanMinimize,不可调节。但可以最小化;(此时最大化按钮不可用)
·CanResize,可调节【默认】;
·CanResizeWithGrip,可根据网格调节;(窗口右下脚显示可调节网格)

②、窗口的位置
WindowStartupLocation指定窗口初始位置,有3个取值:
·Manual,手工指定位置,表示可以通过设置其Top、Left属性值来决定窗口的初始位
置;
·CenterScreen,屏幕中央;
·CenterOwner,父窗体中央;Topmost调节窗口的前后顺序,属性值为true时,窗口位于最前。
Topmost值为true的窗口,位于Topmost值为false的窗口之前;
Topmost值都为true的窗口,获得焦点的窗口位于前。

③、窗口的大小
Width、Height,分别表示窗口的宽度和高度,称为“尺寸属性”。
MaxWidth、MinWidth、MaxHeight、MinHeight,分别表示窗口最大宽度、最小宽度、
最大高度、最小高度。可以通过得到和更改这些属性值,来获取和改变窗口的大小和长
宽范围。

ActualWidth、ActualHeight,分别表示窗口的实际宽度和实际高度,称为“实际尺寸
属性”。
实际尺寸属性是根据当前窗口大小、最小化时窗口大小和最大化时窗口大小来计算得到
的,其值是只读的,也就是说,不能通过改变ActualWidth、ActualHeight的值来更改窗
口大小。
SizeToContent,表示窗口大小由内容决定,有4个取值:
·Manual,手工【默认】;
·Width,窗体宽度由内容决定;
·Height,窗体高度由内容决定;
·WidthAndHeight,窗体大小由内容决定;
如果内容尺寸超过了窗口的最大或最小范围,还是以最大/最小范围为主。如果手工指定
了窗口的Width、Height 属性,那么SizeToContent将被忽略。

④、窗口的可见性和状态
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高;

⑤、窗口的生命周期
关于各事件的描述:
Initialized:当窗口的FrameworkElement底层初始化时触发,即InitializeComponent方法调用时触发。(有背景颜色的为常用的)
·LocationChanged:窗口被移动时触发。
·Activated:窗口被激活时触发。
·Deactivated:窗口处于非激活时(即其他窗口处于激活时)触发。
·Loaded:显示窗口之前触发。
·ContentRendered:当内容显示的时候触发。
·Closing:尝试关闭窗口时触发,可以将参数CancelEventArgs的Cancel的属性设置为
·true,取消关闭操作。
·Closed:在窗口关闭后触发该事件,无法取消。
·Unloaded:当关闭窗口并且从可视化树移除后触发。

二、WPF 控件分类
1、控件
控件是WPF的门面,控件有很多,但是如果仔细去分析,也是有规律可循的。根据
其作用,我们可以把控件分类,日常工作中我们打交道最多的控件无外乎6类: 布局控件、内容控件、带标题内容控件、条目控件、带标题条目控件、特殊内容控件。

·布局控件: 是可以容纳多个控件或者嵌套其他布局的控件,用于在UI上组织和
排列控件。Grid、StackPanel、DockPanel等控件都属此类,它们拥有共同的父
类为Pane

·内容控件内容控件:只能容纳一个控件或者布局控件作为他的内容。Window、Button等
控件属于此类,因为只能容纳一个控件作为其内容,所以经常借助布局控件来
规划其内容。它们的共同父类是ContentControl。

·带标题内容控件:相当于一个内容控件,但是可以加一个标题(Header),标
题部分亦可容纳一个控件或者布局,GroupBox、TabItem等是这类控件的典型
代表。它们的共同父类是HeaderedContentControl。

·条目控件:可以显示一列数据,一般情况下这列数据的类型是相同的。此类控
件包括ListBox、ComboBox等。它们额共同基类是ItemsControl。此类控件在
显示集合类型数据方面功能比较强大。

·带标题条目控件:相当于一个条目控件加上一个标题显示区。TreeViewItem、
MenuItem都属于此类控件。这类控件往往用于显示层级关系数据,结点显示在
其Header区域,子级结点则显示在其条目控件区域。此类控件的共同基类是
HeaderdeItemsControl。

·特殊内容控件:比如TextBox容纳的是字符串、TextBlock可以容纳可自由控制格
式的文本、Image容纳图片类型数据等。这类控件相对比较独立,但也比较常
用。

2、WPF的内容模型
根据是否可以装载内容、能够装载什么样的内容,WPF的UI元素可以分为如表所示的这
些类型:
在这里插入图片描述

2.1 ContentControl族
本族元素的特点如下:
·均派生自ContentControl类。
·它们都是控件(Control)。
·内容属性的名称为Content。
·只能由单一元素充当其内容
怎样理解“只能由单一元素充当其内容”这句话呢?
Button控件属于这一族,所以,我们设第一个Button的内容是一个静态文本,第二个Button的内容是一张图片。
但如果你想让Button的内容既包含文字又包含图片是不行的:Button只能接受一个元
素作为它的Content。
如果真的需要一个带图标的Button,控件的内容也可以是控件,我们只需要先用一个可
以包含多个元素的布局控件把图片和文字包装起来,再把这个布局控件作为Button的内
容就好了。
在这里插入图片描述

2.2 HeaderedContentControl族
本族元素的特点如下:
·它们都派生自HeaderedContentControl类,HeaderedContentControl是ContentControl类的派生类。
·它们都是控件,用于显示带标题的数据。
·除了用于显示主体内容的区域外,控件还具有一个显示标题(Header)的区域。
·内容属性为Content和Header。
·无论是Content还是Header都只是容纳一个元素作为其内容。
HeaderedContentControl族包含的控件如表所示。
在这里插入图片描述

2.3 ItemsControl族
本族元素的特点如下:
·均派生自ItemsControl类。
·它们都是控件,用于显示列表化的数据。
·内容属性为Items或ItemsSource。
·每种ItemsControl都对应有自己的条目容器(Item Container)。
ItemsControl的包含控件:
在这里插入图片描述![在这里插入图片描述](https://img-blog.csdnimg.cn/14e9f695394d4699be79990bebecc24b.png#pic_center
2.4 HeaderedItemsControl族
本族控件除了具有ItemsControl的特性外,还具显示标题的能力。元素特点如下:
·均派生自HeaderedItemsControl类。
·它们都是控件,用于显示列表化的数据,同时可以显示一个标题。
·内容属性为Items、ItemsSource和Header。
因为与ItemsControl非常类似,在此就不浪费时间了。本族控件只有3个:MenuItem、
TreeViewItem、ToolBar。
2.5 Decorator族
本族中的元素是在UI上起装饰效果的。如可以使用Border元素为一些组织在一起的内
容加个边框。如果需要组织在一起的内容能够自由缩放,则可使用ViewBox元素。
本族元素的特点如下:
·均派生自Decorator类。
·起UI装饰作用。
·内容属性为Child。
·只能由单一元素充当内容。
本族元素如表所示:
在这里插入图片描述

2.6 TextBlock和TextBox
这两个控件最主要的功能是显示文本。TextBlock只能显示文本,不能编辑,所以又
称静态文本。TextBox则运行用户编辑其中的内容。TextBlock虽然不能编辑内容,但可以
使用丰富的印刷级的格式控制标记显示专业的排版效果。
TextBox不需要太多的格式显示,所以它的内容是简单的字符串,内容属性为Text。
TextBlock由于需要操纵格式,所以内容属性是Inlines(印刷中的“行”),同时,
TextBlock也保留一个名为Text的属性,当简单地显示一个字符串时,可以使用这个属
性。
2.7 Shape族元素
友好的用户界面离不开各种图形的搭配,Shape族元素(它们只是简单的视觉元素,
不是控件)就是专门用来在UI上绘制图形的一类元素。这类元素没有自己的内容,我们
可以使用Fill属性为它们设置填充效果,还可以使用Stroke属性为它们设置边线的效果。
本族元素的特点如下:
·均派生自Shape类。
·用于2D图形绘制。
·无内容属性。
·使用Fill属性设置填充,使用Stroke属性设置边线。
2.8 Panel族元素
之所以把Panel族元素放在最后是因为这一族控件实在是太重要了——所有用于UI布
局的元素都属于这一族。
·本族元素的特点如下:
·均派生自Panel抽象类。
·主要功能是控制UI布局。
·内容属性为Children。
·内容可以是多个元素,Panel元素将控制它们的布局。
对比ItemsControl和Panel元素,虽然内容都可以是多个元素,但ItemsControl强调以列
表的形式来展现数据而Panel则强调对包含的元素进行布局,所以ItemsControl的内容属
性是Items和ItemsSourse而Panel的内容属性名为Children。WPF框架中这种良好的命名
习惯非常值得我们学习。
本族元素如表所示:
在这里插入图片描述

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 1024 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值