WPF ComboBox

2025年03月17日 | 阅读 9 分钟

ComboBox 控件是一个类似于 ListBox 控件的条目控件。但 ComboBox 和 ListBox 控件之间的区别在于,我们只能从 ComboBox 的集合中选择一个条目。一次只能在 ComboBox 中显示一个条目。单击 ComboBox 后,将显示集合中的条目,然后用户将从集合中选择条目。 ComboBox 没有提供从条目集合中进行多选的功能。在这里,我们必须一次选择一个条目。 ComboBox 控件是三个控件的集合,其中包括 按钮、文本框、PopUp。

按钮的用途是,此控件将向我们显示或隐藏 ComboBox 包含的条目。 PopUp 的目的是,这将显示条目,之后,我们将从 ComboBox 包含的条目中选择一个条目。 文本框控件将向我们显示我们选择的那些条目。

ComboBox 的层次继承关系如下所示

WPF ComboBox

ComboBox 的已使用属性

以下是 ComboBox 中使用的属性列表

序号。已使用属性描述
1.背景ComboBox 中的 Background 属性用于获取或设置一个画笔,通过该画笔我们将设置 ComboBox 控件的背景。
2.BorderThicknessComboBox 中的 BorderThickness 属性用于设置控件的粗细。
3.ForegroundForeground 属性用于 ComboBox 中设置或获取内容的颜色。
4.SelectedIndexSelectedIndex 属性用于获取或设置所选条目的索引。
5.SelectedValueSelectedValue 属性用于获取所选条目的值,我们将通过使用 SelectedValuePath 来获取该值。
6.ItemSourceItemSource 属性用于获取源的对象,然后我们使用该对象生成 ItemsControl 的内容。

ComboBox 中使用的方法

序号方法描述
1.ArrangeArrange 方法用于排列子对象的位置,该子对象用于定义 UIElement 的大小。 父对象将为子元素实现布局控制。 子元素应从布局调用 Arrange 方法,该方法以递归布局更新的形式覆盖实现。
2.FindNameFindName 方法用于检索包含用于标识的特定名称的对象。
3.GetValueGetValue 用于返回依赖属性从 DependencyObject 的当前值。
4.ReadLocalValueReadLocalValue 方法用于在设置局部值时返回依赖属性的局部值。
5.SetBindingSetBinding 方法用于使用绑定对象将绑定附加到 FrameworkElement。

WPF 中使用的事件

序号。事件描述
1.DragEnter当系统报告拖动事件以及元素作为目标元素时,将发生 DragEnter 事件。
2.DragLeave当输入系统报告拖动事件以及元素作为源时,将执行 DragLeave 事件。
3.DragOver当输入系统报告拖动事件以及元素作为潜在的放置目标时,将发生 DragOver 事件。
4.拖放我们将在系统报告放置事件以及输入元素作为目标元素的情况下执行此事件。
5.SelectionChanged当当前选择的条目发生更改时,将发生此事件。
6.SizeChanged当 FrameworkElement 上 ActualHeight 和 ActualWidth 属性的值发生更改时,将发生此事件。
7.IsEnableChanged当 IsEnabled 属性更改时,我们将执行此事件。

ComboBox 的元素将在 XAML 中显示 ComboBox 控件。

表示 ComboBox 的语法

<ComboBox></ComboBox>

ComboBox 的 height 和 width 属性显示 ComboBox 的宽度和高度。 属性 x: Name 将显示控件的名称。 Name 称为控件的唯一标识符。 我们将使用 Margin 属性来设置 ComboBox 在父控件上的位置。 水平和垂直属性用于设置垂直和水平对齐方式。

现在我们将编写一个代码,在该代码中我们将设置控件的高度、宽度和名称。

WPF ComboBox

DataBinding

对于 DataBinding,我们将使用 ItemSource 属性的键 DataGrid。 借助此属性,我们可以绑定任何实现 IEnumerable 的数据源。 Data Grid 的行将绑定到数据源的数据对象,并且 Data Grid 的每一列都将绑定到数据源的属性。

在这里,我们将举一个例子,该例子将创建集合的对象并绑定到 Data Grid 控件。

MainWindow.xaml

MainWindow.xaml.cs

输出

WPF ComboBox

将条目添加到 ComboBox

ComboBox 控件托管 ComboBoxItem 的集合。

现在,我们将编写代码以在设计时使用 XAML 将条目添加到 ComboBox 控件。

输出

WPF ComboBox

在运行时添加和删除 ComboBox 条目

现在我们必须在设计时从 XAML 将条目添加到 ComboBox。 现在,我们希望在运行时将条目添加到 ComboBox。

ComboBox 的 itemsproperty 将显示 ComboBox 的条目。 ItemProperty 是 ItemsCollection 的对象。

如果我们要从集合中添加和删除条目,则将使用 itemscollection 的 Add 和 Remove 或 RemoveAt 方法。

现在,我们将更改 UI 并在页面上添加 TextBox 和一个按钮控件。

现在,我们将添加 XAML 代码以将 TextBox 和按钮添加到页面。

MainWindow.XAML

输出

WPF ComboBox

单击按钮后,我们将通过调用 ComboBox.items.Add 方法将文本框的内容添加到 comboBox 中。 现在,我们将编写一个代码,通过该代码,我们将在单击“添加”按钮后将文本框的文本条目添加到 ComboBox 中。

MainWindow.XAML

MainWindow.XAML.cs

现在,我们将在文本框中输入文本并单击“添加项目”按钮,这将把文本框的内容添加到 comboBox 中,如下图所示

输出

WPF ComboBox

从 ComboBox 中删除条目

要从 ComboBox 中删除条目,我们将使用 ComboBox.items.RemoveAt 方法从 ComboBox 中的条目集合中删除条目。

RemoveAt 方法将使用该条目在集合中的索引。

在应用删除功能之前,输出显示在下面的屏幕截图中

WPF ComboBox

在删除条目之前,输出显示如下图所示

WPF ComboBox

现在,我们将再添加一个按钮,即删除按钮。 此按钮的 XAML 代码如下所示

C# 代码,用于从 ComboBox 中删除条目。

MainWindow.XAML.cs

在应用删除功能后,输出将显示如下图所示

输出

WPF ComboBox

从上图截图中删除了条目 coffee。

在 ComboBox 中添加图像

我们可以在 ComboBox 中放置任何控件,例如图像和文本。 为了显示带有文本的图像,我们将在 StackPanel 中使用 ImageTextBlock 控件。

Image.Source 属性包括我们要在 Image 控件和 TextBlock 上显示的图像的名称。 Text 属性将包括我们要在 TextBlock 上显示的字符串。

MainWindow.Xaml

输出

WPF ComboBox

在 ComboBox 中添加复选框

当我们在 comboBoxItems 内部添加复选框时,我们将生成一个 ComboBox 控件及其内部的复选框。

复选框也可以在其内部托管控件。 此外,我们可以将图像和 TextBlock 作为复选框的内容。

为此,我们将编写一个代码以将复选框与内部的图像一起添加。

现在,我们将更改 ComboBoxItem 的代码,并将复选框和图像添加到所有条目。

可以通过使用 Name 属性来设置复选框的名称。

当需要访问复选框时,我们将使用 Name 属性访问它们。

要将 CheckBox 添加到 ComboBox,我们将编写以下代码

输出

WPF ComboBox

总结

在上面,我们展示了 comboBox 的功能。 创建 comboBox,将条目添加到 comboBox,删除条目,使用 CheckBox,插入图像以及文本。


下一个主题StackPanel 控件