控件可以根据它们所对应的继承关系分成 4 个不同的种类:
- 内容控件
- Items 控件
- Range 控件
- 文本和墨水控件
1. 内容控件
内容控件是只允许包含单一项(item)的简单控件。内容控件都继承自System.Windows.Controls.ContentControl,它们拥有只含有一项的Object 类型的Content 属性
WPF 自带的内容控件有3 大种类:
- 按钮
- 简单容器
- 带头(header)的容器
1.1 按钮
按钮控件完全继承自 ButtonBase 类,这些控件是:
- Button
- RepeatButton, 会在按钮一直被按着的情况下触发点击事件
- ToggleButton,
第1 次点击它的时候,IsChecked 属性会被设为true;再点击一次,就被设为了false.
ToggleButton 还有一个IsThreeState 属性,如果把它设为true 的话,IsChecked 就会有3 种值:true、false或者null。事实上,IsChecked 是Nullable<Boolean>类型的。第1 次点击ToggleButton 会把IsChecked 设为true,第2 次则把它设为null,第3 次把它设为false
- CheckBox
它可以区分是被鼠标点击还是被键盘点击。它可以在被点击时记录选中(checked)或者未选中(unchecked)状态。它支持3 种状态模式,分别为选中(checked)、不确定(indeterminate)、未选中(unche- cked)。
CheckBox 和ToggleButton 只有外观上的差别!CheckBox除了在继承ToggleButton 时重写了控件默认样式以及视觉外观以外,其他都与ToggleButton 完全一样
- RadioButton
RadioButton 是另一种从ToggleButton 继承过来的控件,但它的特殊在于支持互斥性。当多个RadioButton被放在一个组里,一次只有一个可以被选中
1.2 简单容器
- Lable
- ToolTip
- Frame, 很像HTML的Frame, 需要指定一个Source
1.3 带头(header)的容器
- GroupBox
- Expander
2. Items控件
WPF 的另一种主要控件种类是Items 控件。Items 控件包含了一个拥有许多Item 的集合而不是只是一条内容。
2.1 选择器
选择器(selector)作为Items 控件,它的Item 不但可以被索引而且可以被选择。Selector 抽象类继承自ItemsControl,并添加了一些属性来处理选择
WPF 有4 种继承自Selector 的控件:
- ComboBox
- ListBox
- ListView
ListView 从ListBox 继承而来,不管是从外观还是实际的操作上都很像ListBox. 增加了一个View属性,可以指定View为GridView类型
- TabControl
2.2 菜单
- Menu
- ContextMenu
2.3 其它Items控件
- TreeView
- ToolBar
- StatusBar
3. Range控件
Range 控件不会像内容控件或者Items 控件那样渲染任意内容,它们仅在一个指定的范围内存储并且显示数值。Range 控件的核心功能来自于一个叫作RangeBase 的抽象类。这个类定义了浮点数类型的属性来存储当前的值以及范围的端点:Value、Minimum 和Maximum。它还定义了一个简单的ValueChanged 事件
- ProgessBar
- Slider
4. 文本和墨水控件
WPF 包含了一些用来显示和编辑文字的控件
- TextBox
- RichTextBox
- PasswordBox
- InkCanvas