Wpf的控件使用说明大全

布局控件

Grid(网格布局)
功能概述:

Grid 是 WPF 中最常用的布局控件之一,它通过行和列来划分区域,可以将用户界面划分为一个二维的网格结构。这种布局方式非常灵活,适合创建复杂的、规则的界面布局,例如表单、数据表格等。

主要属性:
  • RowDefinitions(行定义)和 ColumnDefinitions(列定义):用于定义网格的行和列的数量、高度和宽度。可以使用绝对数值(如Height="50")、相对比例(如Width="*"表示占据剩余空间)或自动尺寸(如Height="Auto")来设置行高和列宽。例如,<Grid.RowDefinitions></Grid.RowDefinitions>定义了一个包含两行的网格,第二行的高度是第一行的三倍。
  • ShowGridLines(显示网格线):用于调试布局,设置为true时可以显示网格的线条,方便查看控件在网格中的位置。
主要使用方式:

通过设置控件的Grid.Row和Grid.Column附加属性来指定控件所在的行和列,例如

StackPanel(堆叠布局)
功能概述:

StackPanel 将其中的子控件按照水平或垂直方向堆叠排列。它适用于简单的线性布局,例如导航菜单、工具条等。

主要属性:
  • Orientation(方向):用于指定子控件的排列方向,Horizontal表示水平排列,Vertical表示垂直排列。
  • 例如,会将两个按钮垂直堆叠。
clike 复制代码
`<StackPanel Orientation="Vertical">
	<Button>按钮1</Button>
	<Button>按钮2</Button>
</StackPanel>`
主要使用方式:

直接将子控件添加到 StackPanel 中,它们会按照指定的方向依次排列。StackPanel 会自动调整子控件的位置和大小,以适应布局需求。

DockPanel(停靠布局)
功能概述:

DockPanel 允许子控件停靠在容器的边缘(上、下、左、右),剩余的空间可以由一个中心控件占据。常用于创建具有停靠功能的窗口布局,如软件的主界面,有菜单、工具栏等停靠在边缘,中间是主要的工作区域。

主要属性:
  • LastChildFill(最后一个子元素填充):当设置为true(默认值)时,最后一个添加到 DockPanel 中的子控件会填充剩余的空间。例如,在一个包含顶部停靠的菜单和底部停靠的状态栏的 DockPanel 中,中间的主要内容控件可以通过设置为最后一个子元素并利用此属性来填充剩余空间。
  • Dock(停靠方向):作为子控件的附加属性,用于指定每个子控件的停靠方向,如Dock="Top"将子控件停靠在顶部。
主要使用方式:

为每个子控件设置Dock属性来确定它们的停靠位置,然后根据LastChildFill属性来安排最后一个子控件填充剩余空间。

WrapPanel(换行布局)
功能概述:

WrapPanel 类似于 StackPanel,但是当子控件在一行或一列中排列不下时,会自动换行或换列继续排列。常用于显示一组大小不定的元素,如图片库、图标列表等。

主要属性:

Orientation(方向):同样用于指定子控件的排列方向,Horizontal表示水平排列并在水平方向换行,Vertical表示垂直排列并在垂直方向换列。

主要使用方式:

将子控件添加到 WrapPanel 中,它们会按照指定的方向排列,当超出容器边界时自动换行或换列。

UniformGrid(均匀网格布局)
功能概述:

UniformGrid 创建一个具有相同大小单元格的网格,它会自动将子控件均匀分布在网格中,每个子控件占据一个单元格。适用于创建规则的、等大小元素的布局,如棋盘格、图标矩阵等。

主要属性:

Rows(行数)和 Columns(列数):用于指定网格的行数和列数。如果只设置其中一个属性,另一个属性会根据子控件的数量自动计算。例如,...会创建一个三行的均匀网格,列数会根据子控件数量确定。

主要使用方式:

将要排列的子控件添加到 UniformGrid 中,它们会被均匀分布在网格的单元格中。

内容展示控件

TextBlock(文本块)
功能概述:

用于显示只读的文本内容,可以设置文本的格式、字体、颜色等。它支持简单的文本格式化,如加粗、斜体、下划线等,并且可以通过Inlines属性实现更复杂的文本布局,如包含不同格式的段落、超链接等。

主要属性:
  • Text(文本内容):用于设置要显示的文本,例如。
  • FontFamily(字体家族)、FontSize(字体大小)、FontWeight(字体粗细)等字体属性:用于设置文本的字体相关参数,如
clike 复制代码
<TextBlock FontFamily="宋体" FontSize="16" FontWeight="Bold">加粗的宋体文本</TextBlock>
  • Foreground(前景色)和 Background(背景色):用于设置文本的颜色和背景颜色,如。
clike 复制代码
<TextBlock Foreground="Red" Background="LightGray">红色文本在浅灰色背景上</TextBlock>
  • TextWrapping(文本换行):用于控制文本是否换行以及换行方式,有NoWrap(不换行)、Wrap(自动换行)、WrapWithOverflow(自动换行并允许溢出)选项。
主要使用方式:

直接在 XAML 中设置文本内容和各种属性来显示格式化的文本。也可以通过数据绑定来动态更新文本内容,例如将Text属性绑定到视图模型中的一个字符串属性。

RichTextBox(富文本框)
功能概述:

类似于 TextBlock,但允许用户编辑具有丰富格式的文本内容,包括字体、字号、颜色、段落格式、插入图片等。它提供了更高级的文本编辑功能,适用于需要用户输入或编辑复杂文本的场景,如文档编辑器。

主要属性:
  • Document(文档内容):这是一个FlowDocument类型的属性,用于存储和管理富文本内容。可以通过代码或 XAML 来构建FlowDocument,其中包含段落、文本块、图片等元素,例如。
clike 复制代码
<RichTextBox>
	<FlowDocument>
		<Paragraph>
			<Run Text="这是一个富文本段落。"/>
		</Paragraph>
	</FlowDocument>
</RichTextBox>
  • IsReadOnly(是否只读):用于设置富文本框是否允许用户编辑,true表示只读,false表示可编辑。
主要使用方式:

可以在设计时通过 XAML 构建初始的FlowDocument内容,也可以在运行时通过代码操作Document属性来动态修改内容。用户可以通过富文本框的工具栏(通常需要自行实现)或快捷键来应用文本格式。

ItemsControl(项控件)
功能概述:

它是一个抽象的基类,用于显示一组数据项。许多其他的列表型控件(如 ListBox、ComboBox 等)都派生自 ItemsControl。它提供了一种通用的方式来定义数据项的显示模板和布局。

主要属性:
  • ItemsSource(数据源):用于绑定一个数据集合,这个集合中的元素将作为要显示的项。例如。
clike 复制代码
ItemsControl.ItemsSource = new List<string>{"项1", "项2", "项3"};
  • ItemTemplate(项模板):用于定义每个数据项的显示方式,通过数据模板可以将数据项转换为可视化的元素。例如,使用数据模板可以将一个Person对象显示为包含姓名和年龄的文本块。
主要使用方式:

首先设置ItemsSource属性为一个数据集合,然后定义ItemTemplate来指定每个数据项的显示格式。可以通过样式和模板来进一步定制 ItemsControl 的外观和行为,如改变项之间的间距、选择效果等。

ListBox(列表框)
功能概述:

前面已经介绍过部分功能,它用于显示一个选项列表,用户可以从中选择一个或多个选项。它提供了基本的选择功能,并且可以通过样式和模板进行高度定制。

主要属性(补充):
  • SelectedValuePath(选中值路径):当绑定复杂对象作为选项时,用于指定哪个属性的值作为选中值返回。例如,绑定一个List,如果设置SelectedValuePath = "Id",则选中一个Person对象时,SelectedValue属性返回该对象的Id属性值。
  • ScrollViewer.VerticalScrollBarVisibility(垂直滚动条可见性):用于控制是否显示垂直滚动条,有Auto(根据内容自动显示)、Visible(始终显示)、Hidden(隐藏但仍可滚动)等选项。
主要使用方式(补充):

除了基本的选择事件处理外,还可以通过数据绑定将SelectedValue属性与视图模型中的属性关联起来,实现双向数据绑定,方便获取和更新选中的值。并且可以通过自定义ItemTemplate来显示复杂的选项内容。

ComboBox(组合框)
功能概述:

前面也有介绍,它是一个下拉式的选择控件,结合了文本框和列表框的功能。用户可以从下拉列表中选择一个选项,也可以手动输入内容(取决于IsEditable属性)。

主要属性(补充):
  • IsDropDownOpen(下拉列表是否打开):用于以编程方式控制下拉列表的打开和关闭状态。例如,可以通过按钮点击事件来设置此属性,实现手动打开或关闭下拉列表的功能。
  • StaysOpenOnEdit(在编辑时是否保持打开):当组合框可编辑且此属性设置为true时,用户在手动输入内容时下拉列表保持打开状态。
主要使用方式(补充):

可以通过设置SelectedValuePath和DisplayMemberPath属性来处理复杂对象的绑定和显示,并且可以利用IsEditable属性来实现用户手动输入和选择的混合模式,例如在搜索框类型的应用场景中。

DataGrid(数据网格)
功能概述:

用于以表格形式显示和编辑数据,它支持列排序、筛选、分页等功能,并且可以通过样式和模板定制列的外观和编辑方式。是处理数据表格显示的强大工具,适用于各种数据管理和展示场景,如数据库表显示、数据分析工具等。

主要属性:
  • ItemsSource(数据源):用于绑定一个数据集合,这个集合中的元素将作为数据网格的行数据。例如,
clike 复制代码
DataGrid.ItemsSource = myDataList;

其中myDataList是一个包含数据对象的列表。

  • AutoGenerateColumns(自动生成列):当设置为true(默认值)时,数据网格会根据绑定数据对象的公共属性自动生成列。可以设置为false,然后通过手动定义列来更好地控制列的显示。
  • Columns(列集合):用于手动定义数据网格的列。可以添加不同类型的列,如DataGridTextColumn(用于显示文本数据)、DataGridCheckBoxColumn(用于显示复选框)等。例如
clike 复制代码
<DataGrid.Columns><DataGridTextColumn Header="姓名" Binding="{Binding Name}"/></DataGrid.Columns>

定义了一个显示姓名的文本列,绑定到数据对象的Name属性。

主要使用方式:

首先设置ItemsSource为数据集合,然后根据需要决定是否自动生成列或手动定义列。可以通过处理列的排序、筛选和编辑事件来实现数据交互功能,如在用户编辑单元格后保存数据到数据源。

输入控件

TextBox(文本框)
功能概述:

用于用户输入或编辑文本内容,前面已经介绍了基本功能。它支持多种文本输入模式,如单行输入、多行输入、密码输入等。

主要属性(补充):
  • CaretBrush(光标颜色):用于设置文本框中光标的颜色,如
clike 复制代码
<TextBox CaretBrush="Blue">输入框</TextBox>

将光标颜色设置为蓝色。

SelectionBrush(选中文本的背景色)和 SelectionOpacity(选中文本背景色的透明度):用于设置选中文本的背景颜色和透明度,方便用户看到选中的文本部分。

主要使用方式(补充):

可以通过处理KeyDown、KeyUp等键盘事件来实现对用户输入的实时监控和处理,例如限制用户只能输入数字或特定字符。还可以通过数据绑定将Text属性与视图模型中的属性关联,实现数据的双向传输。

PasswordBox(密码框)
功能概述:

专门用于用户输入密码等敏感信息。它会将用户输入的字符以掩码形式显示,通常是黑点或星号,以保护隐私。

主要属性:
  • Password(密码内容):用于获取或设置密码框中的密码内容,例如。
clike 复制代码
string password = passwordBox.Password;
  • PasswordChar(密码掩码字符):用于设置显示密码时的掩码字符,如将密码显示为星号。
clike 复制代码
<PasswordBox PasswordChar="*">
主要使用方式:

通常在登录界面等需要用户输入密码的场景中使用,通过获取Password属性的值来验证用户输入的密码是否正确。

Slider(滑块)
功能概述:

用于让用户通过拖动滑块来选择一个数值范围中的值。它直观地展示了一个连续的数值区间,并且可以设置步长、刻度等属性来控制用户的选择精度。

主要属性:
  • Minimum(最小值)和 Maximum(最大值):用于定义滑块的取值范围,例如将滑块的取值范围设置为 0 到 100。
clike 复制代码
<Slider Minimum="0" Maximum="100">
  • Value(当前值):获取或设置滑块的当前位置所代表的数值,例如。
clike 复制代码
double sliderValue = slider.Value;
  • TickFrequency(刻度频率)和 TickPlacement(刻度位置):用于设置滑块上刻度的显示方式,TickFrequency指定刻度之间的间隔,TickPlacement有None(不显示刻度)、TopLeft(在滑块上方或左侧显示刻度)、BottomRight(在滑块下方或右侧显示刻度)等选项。
主要使用方式:

可以将Value属性与视图模型中的属性通过数据绑定关联起来,实现数值的双向传递。并且可以通过处理ValueChanged事件来实时响应滑块位置的变化,执行相应的操作,如调整音量、亮度等。

NumericUpDown(数字增减框)
功能概述:

让用户通过点击向上或向下的按钮来增加或减少一个数字的值,也可以直接在文本框部分输入数字。它提供了一种方便的方式来选择数字,并且可以设置数字的范围、步长等属性。

主要属性:
  • Value(当前值):和滑块类似,用于获取或设置当前的数字值。
    Minimum(最小值)和 Maximum(最大值):定义数字的取值范围,如。
clike 复制代码
<NumericUpDown Minimum="1" Maximum="100">
  • Increment(增量):用于设置每次点击按钮增加或减少的数值,例如每次点击按钮将使数字增加或减少 5。
clike 复制代码
<NumericUpDown Increment="5">
主要使用方式:

同样可以将Value属性与视图模型中的属性进行数据绑定,并且通过处理ValueChanged事件来响应数字的变化,在业务逻辑中使用这个变化后的值。

导航控件

功能概述:

用于创建应用程序的菜单系统,通常位于窗口的顶部。菜单由多个菜单项(MenuItem)组成,每个菜单项可以包含子菜单,用于提供应用程序的各种功能选项,如文件操作、编辑操作等。

主要属性:
  • Items(菜单项集合):用于添加或获取菜单中的菜单项。例如,
clike 复制代码
<Menu>
	<MenuItem Header="文件">
		<MenuItem Header="打开"/>
	</MenuItem>
</Menu>

创建了一个包含 "文件" 菜单和 "打开" 子菜单项的菜单。

  • IsMainMenu(是否为主菜单):用于设置菜单是否作为主菜单,当设置为true(默认值)时,菜单会自动停靠在窗口的顶部(在某些布局容器中)。
主要使用方式:

通过在 XAML 中构建菜单的层次结构

这些控件和布局容器在WPF中非常灵活和强大,通过组合和自定义,可以构建出各种复杂且用户友好的界面。在使用这些控件时,可以根据具体的应用场景和需求来选择合适的控件,并通过XAML和代码来进行配置和自定义。

小白路漫漫,让我们一起加油!!!

相关推荐
不能只会打代码2 分钟前
Java多线程与线程池技术详解(九)
java·开发语言·java线程池·多线程与线程池
梦境虽美,却不长1 小时前
C语言 学习 日志 递归函数 2024/12/12
c语言·开发语言·学习
老猿讲编程1 小时前
恋爱脑学Rust之并行之旅:Rayon介绍和使用
开发语言·后端·rust
caifox1 小时前
C# 探险之旅:第十六节 - 整数类型:与八位数字精灵的奇幻舞会
开发语言·c#
CVer儿2 小时前
条件编译->enable_if和 if constexpr使用区别
java·开发语言·c++
爱lv行2 小时前
使用 rbenv 切换 Ruby 版本
开发语言·前端·ruby
小屁孩大帅-杨一凡2 小时前
python实现将jar解压各个文件
java·开发语言·python·pycharm·jar
yuko413 小时前
C++重点和练习
开发语言·c++·算法
Richard45663 小时前
C++类的应用和构造函数的调用
开发语言·c++·qt
简易0913 小时前
【C++】10___文件操作
开发语言·c++