1 布局控件

Canvas、DockPanel、Grid、StackPanel、TabPanel、ToolBarOverflowPanel、ToolBarPanel、 UniformGrid、VirtualizingPanel、VirtualizingStackPanel 和 WrapPanel 都是 WPF 中的布局控件,它们都继承自 Panel 类,可以容纳多个子控件或者嵌套其他布局控件,用于在 UI 中组织和排列控件。它们的作用和常用特征及特征值如下:

  • Canvas:画布,可以使用以像素为单位的绝对坐标来定位子控件,类似于 Windows Form 的布局方式。常用的特征有:

    • Canvas.Left:指定子控件相对于画布左边缘的距离,可以是具体的数值或者 Binding 表达式。
    • Canvas.Top:指定子控件相对于画布上边缘的距离,同上。
    • Canvas.ZIndex:指定子控件在画布中的层次顺序,数值越大越靠上。
  • DockPanel:泊靠式面板,可以将子控件按照指定的方向停靠在父容器的边缘,类似于 Winform 中设置控件的 Dock 属性。常用的特征有:

    • DockPanel.Dock:指定子控件停靠在父容器的哪一边,可以是 Left(左)、 Right(右)、Top(上)、Bottom(下)或None(不停靠)。
    • DockPanel.LastChildFill:指定是否让最后一个子控件填充剩余空间,默认为 True。
  • Grid:网格,可以自定义行和列,并通过行列的数量、行高列宽来调整子控件的布 局,近似于 HTML 中的 table。常用的特征有:

    • Grid.RowDefinitions:定义网格的行集合,每个 RowDefinition 可以指定 Height 属性为具体的数值、比例值(*)或 Auto(自适应内容高度)。
    • Grid.ColumnDefinitions:定义网格的列集合,每个 ColumnDefinition 可以指定 Width 属性为具体的数值、比例值(*)或Auto(自适应内容宽度)。
    • Grid.Row:指定子控件所在的行索引,从0开始。
    • Grid.Column:指定子控件所在的列索引,从0开始。
    • Grid.RowSpan:指定子控件横跨几行,默认为1。
    • Grid.ColumnSpan:指定子控件纵跨几列,默认为1。
  • StackPanel:栈式面板,可以将子控件按照水平或垂直方向进行排列。常用的特征有:

    • StackPanel.Orientation:指定子控件的排列方向,可以是 Horizontal(水平) 或Vertical(垂直)。
  • TabPanel:选项卡面板,可以将子控件按照选项卡的形式进行排列。常用的特征有:

    • TabPanel.IsSharedSizeScope:指定是否共享同一组尺寸范围,默认为 False。
  • ToolBarOverflowPanel:工具栏溢出面板,可以将工具栏中多余的子控件放入一个下 拉菜单中。常用的特征有:

    • ToolBarOverflowPanel.WrapWidth:指定工具栏溢出面板中每一行的最大宽 度,默认为无穷大。
  • ToolBarPanel:工具栏面板,可以将工具栏中的子控件按照水平或垂直方向进行排列, 并自动换行。常用的特征有:

    • ToolBarPanel.Orientation:指定工具栏面板中子控件的排列方向,可以是 Horizontal(水平)或 Vertical(垂直)。
  • UniformGrid:均匀网格,可以将子控件按照相同大小和间距进行排列。常用的特征 有:

    • UniformGrid.Rows:指定均匀网格的行数,默认为 1。
    • UniformGrid.Columns:指定均匀网格的列数,默认为无穷大。
  • VirtualizingPanel:虚拟化面板,是一个抽象类,可以提供子控件的虚拟化功能,即 只创建可见的子控件,从而提高性能。常用的特征有:

    • VirtualizingPanel.IsVirtualizing:指定是否启用虚拟化功能,默认为 True。
    • VirtualizingPanel.VirtualizationMode:指定虚拟化的模式,可以是 Standard(标 准)或 Recycling(回收)。
  • VirtualizingStackPanel:虚拟化栈式面板,继承自 VirtualizingPanel,可以将子控件按 照水平或垂直方向进行排列,并提供虚拟化功能。常用的特征有:

    • VirtualizingStackPanel.Orientation:指定子控件的排列方向,可以是 Horizontal (水平)或Vertical(垂直)。
  • WrapPanel:自动换行面板,可以将子控件按照水平或垂直方向进行排列,并在排满 一行或一列后自动换行或换列。常用的特征有:

    • WrapPanel.Orientation:指定子控件的排列方向,可以是 Horizontal(水平) 或Vertical(垂直)。
    • WrapPanel.ItemHeight:指定子控件的高度,默认为 Auto(自适应内容高度)。
    • WrapPanel.ItemWidth:指定子控件的宽度,默认为 Auto(自适应内容宽度)。

2 内容控件

BaseButton、Button、ToggleButton、CheckBox、ComboBoxItem、Frame、GridViewColumnHeader、 GroupItem、Label、ListBoxItem、ListViewItem、NavigationWindow、PasswordBox、RadioButton、 RepeatButton、StatusBarItem、ScrollViewer、ToolTip、UserControl 和 Window 都是 WPF 中的内容控件,它们都继承自 ContentControl 类,可以包含一个任意对象作为它们的内容。它 们的作用和常用特征及特征值如下:

  • BaseButton:按钮基类,是一个抽象类,不能直接使用,提供了按钮的基本功能和属 性,如 Click 事件和 IsPressed 属性。继承自 BaseButton的控件有 Button、ToggleButton、 CheckBox 和 RadioButton 等。

  • Button:按钮,可以显示文本或图像,并在用户单击时触发 Click 事件。常用的特征 有:

    • Content:指定按钮的内容,可以是任意对象。
    • IsDefault:指定按钮是否是默认按钮,如果为 True,则在用户按下回车键时触发 Click 事件,默认为 False。
    • IsCancel:指定按钮是否是取消按钮,如果为 True,则在用户按下Esc 键时 触发 Click 事件,默认为 False。
  • ToggleButton:切换按钮,可以显示文本或图像,并在用户单击时切换其 IsChecked 属性的值。常用的特征有:

    • Content:指定切换按钮的内容,可以是任意对象。
    • IsChecked:指定切换按钮是否被选中,可以是 True(选中)、False(未选中) 或Null(不确定),默认为False。
    • IsThreeState:指定切换按钮是否支持三种状态,如果为 True,则IsChecked 属性可以为 Null,否则只能为 True 或 False,默认为False。
  • CheckBox:复选框,继承自 ToggleButton,可以显示文本或图像,并在用户单击时 切换其IsChecked 属性的值。常用的特征有:

    • Content:指定复选框的内容,可以是任意对象。
    • IsChecked:指定复选框是否被选中,可以是 True(选中)、False(未选中) 或Null(不确定),默认为False。
    • IsThreeState:指定复选框是否支持三种状态,如果为 True,则 IsChecked 属性可以为Null,否则只能为 True 或 False,默认为False。
  • RadioButton:单选按钮,继承自 ToggleButton,可以显示文本或图像,并在用户单击时切换其 IsChecked 属性的值。常用的特征有:

    • Content:指定单选按钮的内容,可以是任意对象。
    • IsChecked:指定单选按钮是否被选中,只能是 True(选中)或False(未选 中),默认为 False。
    • GroupName:指定单选按钮所属的组名,只有同一组名的单选按钮之间才会 互斥,默认为空字符串。
  • ComboBoxItem:组合框项,继承自 ContentControl,可以显示文本或图像,并在用 3 户选择时触发 Selected 事件。常用的特征有:

    • Content:指定组合框项的内容,可以是任意对象。
    • IsSelected:指定组合框项是否被选中,默认为 False。
  • Frame:框架,继承自 ContentControl,可以显示一个页面(Page)或者一个导航窗 口(NavigationWindow),并提供导航功能。常用的特征有:

    • Source:指定要显示的页面或导航窗口的URI地址。
    • NavigationUIVisibility:指定导航界面的可见性,可以是Automatic(自动)、 Hidden(隐藏)或 Visible(可见),默认为Automatic。
  • GridViewColumnHeader:网格视图列头,继承自 ButtonBase,可以显示文本或图像, 并提供排序和拖动功能。常用的特征有:

    • Content:指定网格视图列头的内容,可以是任意对象。
    • Role:指定网格视图列头的角色,可以是 Normal(普通)、Floating(浮动)、 Padding(填充)或None(无),默认为Normal。
  • GroupItem:分组项,继承自 ContentControl,可以显示一个分组的内容,并提供展开 和折叠功能。常用的特征有:

    • Content:指定分组项的内容,可以是任意对象。
    • IsExpanded:指定分组项是否展开,默认为 True。
  • Label:标签,继承自 ContentControl,可以显示文本或图像,并提供快捷键和焦点功 能。常用的特征有:

    • Content:指定标签的内容,可以是任意对象。
    • Target:指定标签关联的控件,可以使用快捷键来激活该控件。
  • ListBoxItem:列表框项,继承自 ContentControl,可以显示文本或图像,并在用户选 择时触发 Selected 事件。常用的特征有:

    • Content:指定列表框项的内容,可以是任意对象。
    • IsSelected:指定列表框项是否被选中,默认为False。
  • ListViewItem:列表视图项,继承自 ListBoxItem,可以显示文本或图像,并在用户选 择时触发 Selected 事件。常用的特征有:

    • Content:指定列表视图项的内容,可以是任意对象。
    • IsSelected:指定列表视图项是否被选中,默认为 False。
  • NavigationWindow:导航窗口,继承自 ContentControl,可以显示一个页面(Page) 或者一个框架(Frame),并提供导航功能。常用的特征有:

    • Source:指定要显示的页面或框架的 URI 地址。
    • ShowsNavigationUI:指定是否显示导航界面,默认为 True。
  • PasswordBox:密码框,继承自 ContentControl,可以让用户输入密码,并提供安全 4 和验证功能。常用的特征有:

    • Password:指定密码框中的密码字符串。
    • PasswordChar:指定密码框中用于隐藏密码的字符,默认为“●”。
  • RadioButton:单选按钮,继承自 ToggleButton,可以显示文本或图像,并在用户单击 时切换其 IsChecked 属性的值。常用的特征有:

    • Content:指定单选按钮的内容,可以是任意对象。
    • IsChecked:指定单选按钮是否被选中,只能是 True(选中)或False(未选 中),默认为 False。
    • GroupName:指定单选按钮所属的组名,只有同一组名的单选按钮之间才会 互斥,默认为空字符串。
  • RepeatButton:重复按钮,继承自 ButtonBase,可以显示文本或图像,并在用户按住 时重复触发 Click 事件。常用的特征有:

    • Content:指定重复按钮的内容,可以是任意对象。
    • Delay:指定重复按钮第一次触发Click 事件之前等待的时间(毫秒),默认为 600。
    • Interval:指定重复按钮连续触发 Click 事件之间间隔的时间(毫秒),默认为 33。
  • StatusBarItem:状态栏项,继承自 ContentControl,可以显示文本或图像,并在状态 栏中占据一定空间。常用的特征有:

    • Content:指定状态栏项的内容,可以是任意对象。
    • HorizontalContentAlignment:指定状态栏项内容相对于水平方向的对齐方式, 默认为 Stretch(拉伸)。
  • ScrollViewer:滚动视图器,继承自 ContentControl,可以显示一个可滚动的内容,并 提供滚动条和缩放功能。常用的特征有:

    • Content:指定滚动视图器要显示的内容,可以是任意对象。
    • HorizontalScrollBarVisibility:指定水平滚动条的可见性,可以是 Disabled(禁 用)、Auto(自动)、Hidden(隐藏)或 Visible(可见),默认为 Hidden。
    • VerticalScrollBarVisibility:指定垂直滚动条的可见性,同上,默认为Visible。
  • ToolTip:工具提示,继承自 ContentControl,可以显示一个简短的文本或图像,用于 描述其他控件的功能或用法。常用的特征有:

    • Content:指定工具提示的内容,可以是任意对象。
    • Placement:指定工具提示相对于目标控件的位置,可以是 Bottom(下)、Top (上)、Left(左)、Right(右)、Mouse(鼠标位置)、MousePoint(鼠标点)、 Center(中心)、Absolute(绝对位置)或Relative(相对位置),默认为 Mouse。
    • IsOpen:指定工具提示是否打开,默认为 False。
  • UserControl:用户控件,继承自 ContentControl,可以自定义一个复合控件,包含多个子控件,并提供一致的外观和行为。常用的特征有:

    • Content:指定用户控件的内容,可以是任意对象。
  • Window:窗口,继承自 ContentControl,可以显示一个独立的窗口,并提供标题栏、 边框、菜单、工具栏等功能。常用的特征有:

    • Content:指定窗口的内容,可以是任意对象。
    • Title:指定窗口的标题,可以是任意字符串。
    • WindowStyle:指定窗口的样式,可以是 None(无边框)、SingleBorderWindow (单边框窗口)、ThreeDBorderWindow(三维边框窗口)或ToolWindow(工 具窗口),默认为SingleBorderWindow。
    • WindowState:指定窗口的状态,可以是 Normal(正常)、Minimized(最小 化)或 Maximized(最大化),默认为Normal。

3 带标题内容控件

Expander 和 GroupBox 都是 WPF 中的带标题内容控件,它们都继承自HeaderedContentControl 类,可以显示一个标题(Header)和一个内容(Content)。它们的作用和常用特征及特征值 如下:

  • Expander:扩展器,可以显示一个可展开或折叠的内容区域。常用的特征有:

    • Header:指定扩展器的标题,可以是任意对象。
    • Content:指定扩展器的内容,可以是任意对象。
    • IsExpanded:指定扩展器是否展开,默认为 False。
    • ExpandDirection:指定扩展器的展开方向,可以是 Left(左)、Right(右)、 Up(上)或Down(下),默认为Down。
  • GroupBox:分组框,可以显示一个带边框的内容区域。常用的特征有:

    • Header:指定分组框的标题,可以是任意对象。
    • Content:指定分组框的内容,可以是任意对象。
    • HeaderAlignment:指定分组框标题相对于边框的对齐方式,可以是Left(左)、 Center(中)或Right(右),默认为Left。

4 条目控件

ComboBox、ContextMenu、DataGrid、HeaderedItemsControl、ListBox、ListView、Menu 和 ToolBar 都是 WPF 中的条目控件,它们都继承自 ItemsControl 类,可以显示一列数据,一般情况下这列数据的类型是相同的。它们的作用和常用特征及特征值如下:

  • ComboBox:组合框,可以显示一个可下拉的列表,并让用户从中选择或输入一个选 项。常用的特征有:

    • Items:指定组合框的数据集合,可以是任意对象的集合。
    • SelectedItem:指定组合框当前选中的项,可以是任意对象。
    • SelectedIndex:指定组合框当前选中项的索引,从 0 开始,如果没有选中项 则为 -1。
    • Text:指定组合框当前显示的文本,可以是任意字符串。
    • IsEditable:指定组合框是否可编辑,如果为 True,则用户可以在组合框中输 入文本,否则只能从列表中选择,默认为False。
  • ContextMenu:上下文菜单,可以显示一个弹出式的菜单,并让用户从中选择一个命 令或选项。常用的特征有:

    • Items:指定上下文菜单的数据集合,通常是 MenuItem 的集合。
    • PlacementTarget:指定上下文菜单相对于哪个控件弹出,默认为触发上下文 菜单的控件。
    • Placement:指定上下文菜单相对于目标控件的位置,可以是 Bottom(下)、 Top(上)、Left(左)、Right(右)、Mouse(鼠标位置)、MousePoint(鼠标 点)、Center(中心)、Absolute(绝对位置)或 Relative(相对位置),默认为 MousePoint。
  • DataGrid:数据网格,可以显示一个表格形式的数据,并提供排序、分组、编辑等功 能。常用的特征有:

    • ItemsSource:指定数据网格的数据源,通常是一个实现了 IEnumerable 接口 的对象,如ObservableCollection 等。
    • AutoGenerateColumns:指定是否自动根据数据源生成列,默认为True。
    • Columns:指定数据网格的列集合,每个 DataGridColumn 可以指定 Header (列头)、Binding(绑定字段)、Width(列宽)等属性。
    • SelectedItem:指定数据网格当前选中的行,可以是任意对象。
    • SelectedIndex:指定数据网格当前选中行的索引,从0开始,如果没有选中 行则为-1。
    • SelectionMode:指定数据网格的选择模式,可以是Single(单选)或Extended (多选),默认为Extended。
  • HeaderedItemsControl:带标题条目控件,继承自ItemsControl,可以显示一个标题和 一列数据。常用的特征有:

    • Header:指定带标题条目控件的标题,可以是任意对象。
    • Items:指定带标题条目控件的数据集合,可以是任意对象的集合。
  • ListBox:列表框,继承自 ItemsControl,可以显示一列可选择的数据,并提供滚动条 和虚拟化功能。常用的特征有:

    • ItemsSource:指定列表框的数据源,通常是一个实现了 IEnumerable 接口的 对象,如ObservableCollection 等。
    • SelectedItem:指定列表框当前选中的项,可以是任意对象。
    • SelectedIndex:指定列表框当前选中项的索引,从 0 开始,如果没有选中项 则为 -1。
    • SelectionMode:指定列表框的选择模式,可以是 Single(单选)、Multiple(多 选)或Extended(多选),默认为 Single。
  • ListView:列表视图,继承自 ListBox,可以显示一列可选择的数据,并提供不同的 视图模式和分组功能。常用的特征有:

    • ItemsSource:指定列表视图的数据源,通常是一个实现了 IEnumerable 接口 的对象,如ObservableCollection 等。
    • SelectedItem:指定列表视图当前选中的项,可以是任意对象。
    • SelectedIndex:指定列表视图当前选中项的索引,从 0 开始,如果没有选中 项则为 -1。
    • SelectionMode:指定列表视图的选择模式,可以是 Single(单选)、Multiple (多选)或Extended(多选),默认为 Single。
    • View:指定列表视图的视图模式,可以是 GridView(网格视图)、IconView (图标视图)、TileView(平铺视图)或 DetailView(详细视图)等。
  • Menu:菜单,继承自 ItemsControl,可以显示一个水平或垂直的菜单栏,并让用户从 中选择一个命令或选项。常用的特征有:

    • Items:指定菜单的数据集合,通常是 MenuItem 的集合。
    • IsMainMenu:指定菜单是否是主菜单,如果为 True,则菜单会自动获取焦点 和键盘输入,默认为 False。
  • ToolBar:工具栏,继承自 ItemsControl,可以显示一行或多行的工具按钮,并提供拖 动和溢出功能。常用的特征有:

    • Items:指定工具栏的数据集合,通常是 Button、ToggleButton、Separator 等 控件的集合。
    • Band:指定工具栏所在的行索引,从 0 开始,默认为 0。
    • BandIndex:指定工具栏在同一行中的位置索引,从 0 开始,默认为 0。

5 带标题条目控件

TabControl 和 TreeView 都是 WPF 中的带标题条目控件,它们都继承自 ItemsControl 类,可以显示一列数据,一般情况下这列数据的类型是相同的。它们的作用和常用特征及特征值如 下:

  • TabControl:选项卡控件,可以显示一个可切换的选项卡集合,并让用户从中选择一 个显示不同的内容。常用的特征有:

    • Items:指定选项卡控件的数据集合,通常是 TabPage 的集合。
    • SelectedItem:指定选项卡控件当前选中的选项卡,可以是任意对象。
    • SelectedIndex:指定选项卡控件当前选中选项卡的索引,从 0 开始,如果没有选中选项卡则为 -1。
    • Alignment:指定选项卡控件的选项卡位置,可以是 Top(上)、Bottom(下)、 Left(左)或Right(右),默认为 Top。
    • SizeMode:指定选项卡控件的大小模式,可以是 Fixed(固定)、FillToRight (填充到右边)或Normal(正常),默认为 Normal。
  • TreeView:树形视图控件,可以显示一个分层结构的数据,并让用户展开或折叠各 个节点。常用的特征有:

    • Items:指定树形视图控件的数据集合,通常是TreeNode的集合。
    • SelectedItem:指定树形视图控件当前选中的节点,可以是任意对象。
    • SelectedIndex:指定树形视图控件当前选中节点的索引,从 0 开始,如果没有选中节点则为-1。
    • ShowRootLines:指定树形视图控件是否显示根节点的连接线,默认为 True。
    • ShowPlusMinus:指定树形视图控件是否显示展开或折叠按钮,默认为 True。

6 特殊内容控件

TextBox、TextBlock 和 Image 都是 WPF 中的特殊内容控件,它们不属于 ContentControl 类, 但也有Content 属性。它们的作用和常用特征及特征值如下:

  • TextBox:文本框,可以让用户输入和编辑文本,并提供撤销、重做、剪切、复制、 粘贴等功能。常用的特征有:

    • Text:指定文本框中的文本内容,可以是任意字符串。
    • TextWrapping:指定文本框是否自动换行,可以是 NoWrap(不换行)、Wrap (换行)或WrapWithOverflow(超出边界时换行),默认为 NoWrap。
    • TextAlignment:指定文本框中的文本对齐方式,可以是 Left(左对齐)、Center (居中)、Right(右对齐)或Justify(两端对齐),默认为 Left。
    • AcceptsReturn:指定文本框是否接受回车键输入,如果为 True,则用户可以 在文本框中输入多行文本,否则回车键无效,默认为 False。
    • AcceptsTab:指定文本框是否接受制表键输入,如果为 True,则用户可以在文本框中输入制表符,否则制表键无效,默认为 False。
  • TextBlock:文本块,可以显示一段可自由控制格式的文本,并支持内联元素和绑定。 常用的特征有:

    • Text:指定文本块中的文本内容,可以是任意字符串。
    • TextWrapping:指定文本块是否自动换行,可以是 NoWrap(不换行)、Wrap (换行)或WrapWithOverflow(超出边界时换行),默认为 NoWrap。
    • TextAlignment:指定文本块中的文本对齐方式,可以是 Left(左对齐)、Center (居中)、Right(右对齐)或 Justify(两端对齐),默认为 Left。
    • Inlines:指定文本块中的内联元素集合,可以是 Run(普通文本)、Bold(加 粗文本)、Italic(斜体文本)、Underline(下划线文本)、Hyperlink(超链接 文本)等。
  • Image:图像,可以显示一个图像,并支持缩放和旋转。常用的特征有:

    • Source:指定图像的源地址,可以是一个 URI 字符串或者一个 BitmapImage 对象。
    • Stretch:指定图像的缩放模式,可以是 None(不缩放)、Fill(填充)、Uniform (等比例缩放)或UniformToFill(等比例填充),默认为Uniform。
    • RenderTransform:指定图像的渲染变换,可以是一个 Transform 对象,如 RotateTransform(旋转变换)、ScaleTransform(缩放变换)、SkewTransform (倾斜变换)或TranslateTransform(平移变换)等。