8. 控件的介绍
WPF学习目录
控件
是数据和行为的载体,没有固定的形象。
控件关注的是抽象的数据和行为。
常用的控件分为6类
1.布局控件:可容纳多个控件或嵌套其他布局控件,用于UI组织和排列控件,共同的父类为Panel。
2.内容控件:只能容纳一个其他控件或布局控件作为内容,经常需要使用布局控件来容纳其他内容。共同的父类为 ContentControl。
3.带标题的内容控件:可以加一个标题的内容控件,标题部分可容纳一个控件或者布局。共同父类为HeaderedContentControl。
4.条目控件:显示一列数据,一般情况下,这列数据的类型相同。共同的基类是 ItemsControl。
5.带标题的条目控件:可以加一个标题的条目控件,标题部分可容纳一个控件或者布局,用于显示层级关系数据。共同父类为 HeaderedItemsControl。
6.特殊内容控件:TextBox容纳字符串,TextBlock容纳可自由控制格式的文本,Image容纳图片类型的数据。
内容模型
UI
元素类型
名称 | 注释 |
---|---|
ContentControl | 单一内容控件 |
HeaderedContentControl | 带标题的单一内容控件 |
ItemsControl | 以条目集合为内容的控件 |
HeaderedItemsControl | 带标题的以条目集合为内容的控件 |
Decorator | 控件装饰元素 |
Panel | 面板元素 |
Adorner | 文字点缀元素 |
Flow Text | 流式文本元素 |
TextBox | 文本输入框 |
TextBlock | 静态文字 |
Shape | 图形元素 |
ContentControl族
包含的控件:
BUtton
,ButtonBase
,CheckBox
,ComboBoxItem
,ContentControl
,Frame
,GridViewColumnHeader
,GroupItem
,Label
,ListBoxItem
,ListViewItem
,NavigationWindow
,RadioButton
,RepeatButton
,ScrollViewer
,StatusBarItem
,ToggleButton
,ToolTip
,UserControl
,Window
特点:
1.都是 ContentControl 的子类
2.都是控件
3.内容属性都是Content
4.只能由单一元素充当内容
HeaderedContentControl族
包含的控件:
Expander
,GroupBox
,HeaderedContentControl
,TabItem
特点:
1.都是 HeaderedContentControl 的子类,HeaderedContentControl是ContentControl的子类
2.都是控件,除了一个内容区域还有一个显示标题的区域
3.内容属性是 Content 和 Header
4.Content 和 Header都只能由单一元素充当内容
ItemsControl 族
包含的控件:
Menu
,MenuBase
,ContextMenu
,ComboBox
,ItemsControl
,ListBox
,LiatView
,TabControl
,TreeView
,Selector
,StatusBar
特点:
1.都是 ItemsControl 的子类
2.都是控件,用于显示列表化的数据
3.内容属性是 Items 或 ItemsSource
4.每种 ItemControl 都对应有自己的条目容器 (Item Container)
HeaderItemsControl 族
包含的控件:
MenuItem
,ToolBar
,TreeViewItem
特点:
1.都是 HeaderItemsControl 的子类
2.都是控件,用于显示列表化的数据,并可以显示一个标题
3.内容属性是 Items 、ItemsSource 和 Header
4.每种 ItemControl 都对应有自己的条目容器 (Item Container)
Decorator 族
包含的控件:
ButtonChrome
,ClassBorderDecorator
,ListBoxChrome
,SystemDropShadowChrome
,Border
,InkPresenter
,BulletDecorator
,ViewBox
,AdornerDecorator
特点:
1.都是 Decorator 的子类
2.起 UI 装饰作用,如用 Border 为内容添加一个边框
3.内容属性是 Child
4.只能由单一元素充当内容
TextBlock 和 TextBox
均是显示文本。
TextBlock
只显示文本,不能编辑,但是格式控制灵活,内容属性为 Inlines
,同时保留一个显示简单字符串的内容属性 Text
TextBox
则允许用户编辑内容,内容属性为Text
Shape 族
用来 UI 绘图的一类元素,没有自己的内容,可以使用 Fill 属性为它们设置填充效果
特点:
1.都是 Shape 的子类
2.用于 2D 图形绘制
3.无属性内容
4.使用 Fill 属性设置填充,使用 Stroke 属性设置边线
Panel 族
包含的控件:
Canvas
,DockPanel
,Grid
,TabPanel
,ToolBarOverflowPanel
,StackPanel
,ToolBarPanel
,UniformGrid
,VirtualizingPanel
,VirtualizingStackPanel
,WrapPanel
特点:
1.都是 Panel子类
2.主要是用于 UI 布局
3.内容属性为 Children
4.内容可以是多个元素,Panel 元素将控制它们的布局