原文: 控件篇 日常使用最多的控件有6类:
1. 布局控件:可以容纳多个控件或嵌套其他布局控件,例如Grid、StackPanel、DockPanel等,有共同的父类Panel
2. 内容控件:只能容纳一个其他控件或布局控件作为它的内容,例如Window、Button等,有共同的父类ContentControl
3. 带标题内容控件:相当于一个内容控件,但是可以加一个标题,例如GroupBox、TabItem等,有共同的父类HeaderedContentControl
4.条目控件:可以显示一列数据,例如ListBox、ComboBox有共同的父类ItemsControl
5.带标题条目控件:相当于条目控件加一个标题,例如TreeViewItem、MenuItem,有共同的父类HeaderedItemsControl
6.特殊内容控件:相对比较独立,功能不同,例如TextBox、TextBlock、Image
控件的内容可以是数据,也可以是其他控件,如果不考虑控件内部的组成结构,只观察由控件组成的树,那么这棵树就成为逻辑树,如果连控件本身的树也考虑在内,那这棵树就是可视元素树
名称 | 注释 |
---|---|
ContentControl | 单一内容控件 |
HeaderedContentControl | 带标题的单一内容控件 |
ItemsControl | 以条目集合为内容的控件 |
HeaderedItemsControl | 带标题的以条目集合为内容的控件 |
Decorator | 控件装饰元素 |
Panel | 面板类元素 |
Adorner | 文字点缀元素 |
Flow Text | 流式文本元素 |
TextBox | 文本输入框 |
TextBlock | 静态文字 |
Shape | 图形元素 |
各类内容模型详解
1.ContentControl本族元素特点如下:2.HeaderedContentControl1)均派生于ContentControl类
2)都是控件
3)内容属性名称为Content
4)只能由单一元素填充
Button ButtonBase CheckBox ComboBoxItem Frame GridViewColumnHeader GroupItem Label ListBoxItem ListViewItem NavigationWindow RadioButton RepeatButton ScrollViewer StatusBarItem ToggleButton ToolTip UserControl Window 3.ItemsControl1)均派生于HeaderedContentControl类,HeaderedContentControl是ContentControl的派生类
3)除了显示主体内容外,还具有一个显示标题的区域
4)内容属性为Content和Header
5)Content和Header都只能容纳一个元素
Expander GroupBox TabItem 4.HeaderedItemsControl1)均派生于ItemsControl类
3)内容属性为Items或ItemsSource
4)每个ItemsControl都对应有自己的条目容器
Menu MenuBase ContextMenu ComboBox ListBox ListView TabControl TreeView Selector StatusBar 5.Decorator1)均派生于HeaderedItemsControl类
3)内容属性为Items、ItemsSource、Header
MenuItem TreeViewItem ToolBar 6.TextBlock和TextBox1)均派生于Decorator类
2)起UI装饰作用
3)内容属性为Child
4)只能由单一元素充当内容
ButtonChrome ClassicBorderDecorator ListBoxChrome SystemDropShadowChrome Border InkPresenter BulletDecorator ViewBox AdornerDecorator TextBlock只能显示文本,不能编辑,所以又称静态文本,TextBox允许用户编辑,TextBlock虽然不能编辑,但可以使用丰富的印刷级格式控制标记显示专业的排版效果,TextBox的内容属性是Text,TextBlock的内容属性是Inlines,也保留了一个Text的内容属性,用于显示简单的字符串7.Shape8.Panel1)均派生于Shape类
2)用于绘制2D图形
3)无内容属性
4)使用Fill属性填充,使用Stroke属性设置边线
1)均派生于Panel类
2)用于控制UI布局
3)内容属性为Children
4)内容可以是多个元素
Canvas DockPanel Grid TabPanel ToolBarOverflowPanel StackPanel ToolBarPanel UniformGrid VirtualizingPanel VirtualizingStackPanel WrapPanel