WPF_06_控件

  • A+
所属分类:.NET技术
摘要

WPF控件继承自 System.Windows.Control 类。包括以下控件:内容控件可包含并显示一块内容。与布局容器不同的是,只能包含一个子元素。内容控件都继承自抽象类 ContentControl .

WPF控件继承自 System.Windows.Control 类。包括以下控件:

  • 内容控件:可包含嵌套的元素。包括 Label,Button,ToolTip,ScrollViewer
  • 带标题的内容控件:通常用于封装更大的用户界面块。包括 TabItem,GroupBox,Expander
  • 文本控件:支持输入文本。包括 Textbox,PasswordBox,RickTextBox
  • 列表控件:包括 ListBox,ComboBox
  • 基于范围的控件:通常只有共同的属性 Value。包括Slider,ProgressBas
  • 日期控件:包括 Calendar,DataPicker

内容控件

内容控件可包含并显示一块内容。与布局容器不同的是,只能包含一个子元素。内容控件都继承自抽象类 ContentControl .

Content属性

Content属性支持任何类型的对象,但可分为两大类:

  • 未继承自 UIElement 类的对象: 调用这些控件的 ToString() 方法获取文本
  • 继承自 UIElement 类的对象:使用 UIElement.OnRender() 方法进行显示

HorizontalContentAlignment,VerticalContentAlignment 以及 Padding 属性都是在 Control 类中定义,而非 ContentControl 类中定义,这是因为有些控件不是内容控件也需要包含某些类型的内容。

标签

Label 控件支持 记忆符(mnemonics)-能够为链接的控件设置焦点的快捷键。

<Label Target="{Binding ElementName=txtA}"> Choose _A</Label> <TextBox Name="txtA"/> <Label Target="{Binding ElementName=txtB}"> Choose _B</Label> <TextBox Name="txtB"></TextBox> 

按钮

ButtonBase 定义了 Click 事件并添加了对命令的支持,添加了 ClickMode 属性。

Button

Button 添加了两个可写属性:

  • IsCancel 设置为ture时,按钮就成为窗口的取消按钮,在任何位置按下 Esc键就会触发
  • IsDefault 设置为true时,按钮就成为默认按钮
ToggleButton 和 RepeatButton
  • GridViewColumnHeader 使用ListView时,该类表示一列可以单击的标题
  • RepeatButton 只要按钮保持按下状态就不断触发
  • ToggleButton 有两个状态的按钮
CheckBox

CheckBox 继承自 ToggleButton ,可以切换开关状态。

RadioButton

RadioButton 继承自ToggleButton,增加了 GroupName 属性进行分组。

并非一定使用 GroupBox 容器封装单选按钮,但通常约定如此,GourpBox控件显示一条边框和标题。

工具提示

WPF中工具提示是内容控件,可以放置任何可视化元素,可控制工具提示的显示和隐藏速度。

<Button ToolTip="This is my toolTip"> I have a tooltip </Button> <Button Content="I have a fancy tooltip">     <Button.ToolTip>         <StackPanel>             <TextBlock Margin="3"> Image and text</TextBlock>             <Image Source="happy.jpg" Stretch="None"/>             <TextBlock Margin="3">Image and text</TextBlock>         </StackPanel>     </Button.ToolTip> </Button> 

特殊容器

内容控件不仅包括基本控件,如标签、按钮以及工具提示;还包括特殊容器,可用于构造用户界面比较大的部分区域。

ScrollViewer

为了获得滚动支持,需要在 ScrollViewer 控件中封装希望滚动的内容。

通过代码进行滚动
  • LineUp() 和 LineDown() ,向上或向下滚动滚动一整屏。
  • 用于水平滚动的类似方法,包括 LineLeft(),LineRight(),PageLeft(),PageRight()
  • ScrollToXxx() 滚动到任何特定位置。ScrollToEnd() 和 ScrollToHome()可以滚动到内容的顶部和底部。ScrollToVerticalOffset() 可以滚动到特定位置。ScrollToLeftEnd(),ScrollToRightEnd(),ScrollToHorizontalOffset().
自定义滚动
  • 在ScrollViewer中放置元素,是实现了 IScrollInfo 接口的任意元素
  • 将ScrollViewer.CanContentScroll 设置为true
  • ScrollViewer控件通过 IScrollInfo 接口来调用元素的方法

GroupBox

GroupBox 显示为具有圆角和标题的方框,仍需要布局容器来布置内容。GroupBox 经常使用对数量不多的相关控件进行分组,比如几个单选按钮。

TabItem

TabItem 表示TabControl控件中的一页。
与Content属性一样,Header属性可接受任何类型的对象。继承自 UIElement 的类通过渲染来显示,对于内联文本以及其他所有对象使用 ToString() 方法。

Expander

Expander 是具有标题的内容控件,封装了一块内容,通过单击小箭头按钮可显示或隐藏内容。在线帮助以及 Web 页面经常使用这种技术。
可以使用 ExpandDirection 设置为 Up,Left 或 Right

文本控件

PasswordBox 控件直接继承自Control类。TextBox和RichTextBox控件间接继承自 TextBoxBase 类。

多行文本

TextBox可以设置 MaxLength 来限制字符的数量。如果 TextWrapping=Wrap 是在控件的边缘换行;如果TextWrapping=WrapWithOverflow 允许拉伸某些行使其超出右边缘。
通过 VerticalScrollBarVisibility 设置为 Visible 或 Auto,添加始终显示或按需显示的滚动条。

选择文本

TextBox 还提供了使用 SelectionStart,SelectionLength 以及 SelectedText 属性来决定选择哪些文本或改变当前所选文本的能力。Undo 功能允许用户撤销最近的操作。

拼写检查

设置 TextBox 的 SpellCheck.IsEnabled 属性即可拼写检查。

列表控件

列表控件继承自 ItemsControl ,该类添加了所有基于列表的控件都使用的基本功能。

ListBox

ListBox 不仅可以包含ListBoxItem对象,也可以是其他任意元素。ListBoxItem继承自 ContentControl 类。

<ListBox>     <ListBoxItem>         <StackPanel Orientation="Horizontal">             <Label VerticalContentAlignment="Center">A happy face</Label>             <Image Source="happy.jpg"/>         </StackPanel>     </ListBoxItem> </ListBox> 

ListBox 能够隐式创建所需要的 ListBoxItem 对象。此时 SelectedItem 值是放到列表中的对象。

ComboBox

ComboBox控件包含 ComboBoxItem 对象,既可以显示地也可以隐士地创建该集合。设置 IsEditable = true,可以允许用户通过输入文本选择一项。

基于范围的控件

ScrollBar,ProgressBar,Slider 都继承自 RangeBase 类。这些控件用在特定最小值和最大值之间的数值。

属性 说明
Value 当前值,默认从0开始
Maximum 最大值
Minimum 最小值
SmallChange Value属性为“小变化”向上或向下调整的数量。对于ScrollBar和Slider是使用箭头键时值改变的量
LargeChange Value属性为“大变化”向上或向下调整的数量。对于ScrollBar和Slider是使用 PageUp和PageDown键或单击滑块两侧时值改变的量

Slider

音量控制时,背后的数字对于用户来说是没有意义的,是 Slider 典型的应用。

属性 说明
Orientation 竖直或水平
Delay Interval 按下滑动条两侧时,移动速度
TickPlacement 刻度显示的位置
TickFrequency 设置刻度之间的间隔,决定了显示多少刻度
Ticks 如果希望在特定不规则位置显示刻度,可使用 Ticks 集合
IsSnapToTickEnabled 当移动滑块会自动跳转到最近的刻度标记
IsSelectionRangeEnabled 可使用选择范围使滑块条的一部分显示阴影

ProgressBar

ProgressBar 控件只是长时间运行任务的进度,不能与用户交互,需要代码递增 Value 属性值。如果将 IsIndeterminate = true ,会周期性显示从左向右跳动的绿色脉冲,用于长时间运行或者不知道执行多少时间的情况。

我的公众号

WPF_06_控件