public ref class ListBox : System::Windows::Controls::Primitives::Selector
[System.Windows.Localizability(System.Windows.LocalizationCategory.ListBox)]
[System.Windows.StyleTypedProperty(Property="ItemContainerStyle", StyleTargetType=typeof(System.Windows.Controls.ListBoxItem))]
public class ListBox : System.Windows.Controls.Primitives.Selector
[<System.Windows.Localizability(System.Windows.LocalizationCategory.ListBox)>]
[<System.Windows.StyleTypedProperty(Property="ItemContainerStyle", StyleTargetType=typeof(System.Windows.Controls.ListBoxItem))>]
type ListBox = class
    inherit Selector
Public Class ListBox
Inherits Selector
ListBox

以下示例创建 ListBox 并订阅 事件 SelectionChanged

<TextBox Name="tb" Width="140" Height="30"></TextBox> <ListBox Name="lb" Width="100" Height="55" SelectionChanged="PrintText" SelectionMode="Single"> <ListBoxItem>Item 1</ListBoxItem> <ListBoxItem>Item 2</ListBoxItem> <ListBoxItem>Item 3</ListBoxItem> <ListBoxItem>Item 4</ListBoxItem> <ListBoxItem>Item 5</ListBoxItem> <ListBoxItem>Item 6</ListBoxItem> <ListBoxItem>Item 7</ListBoxItem> <ListBoxItem>Item 8</ListBoxItem> <ListBoxItem>Item 9</ListBoxItem> <ListBoxItem>Item 10</ListBoxItem> </ListBox> void PrintText(object sender, SelectionChangedEventArgs args) ListBoxItem lbi = ((sender as ListBox).SelectedItem as ListBoxItem); tb.Text = " You selected " + lbi.Content.ToString() + "."; Private Sub PrintText(ByVal sender As Object, ByVal e As SelectionChangedEventArgs) Dim lbsender As ListBox Dim li As ListBoxItem lbsender = CType(sender, ListBox) li = CType(lbsender.SelectedItem, ListBoxItem) tb.Text = " You selected " & li.Content.ToString & "." End Sub

ListBox 是 , ItemsControl 这意味着它可以包含任何类型的对象集合, (如字符串、图像或面板) 。 有关更多信息,请参见 ItemsControl 类。

中的 ListBox 多个项是可见的,这与 不同, ComboBox 后者只有所选项可见, IsDropDownOpen 除非 属性为 true 。 属性 SelectionMode 确定 中 ListBox 是否一次可以选择多个项。

属性 SelectionMode 确定用户可以一次选择多少项。 可以将 属性设置为 Single (默认) 、 Multiple Extended 。 下表描述了这些枚举值的行为。

ListBox 控件通常用于数据绑定。 有关详细信息,请参阅 数据绑定概述

显示大量项可能会导致性能问题。 有关详细信息 ,请参阅优化性能:控件

自定义 ListBox 控件

若要将相同的属性设置应用于多个 ListBox 控件,请使用 Style 属性。 可以修改默认 ControlTemplate 以赋予控件独特的外观。 有关创建 的详细信息, ControlTemplate 请参阅 通过创建 ControlTemplate 自定义现有控件的外观 。 若要查看特定于 ListBox 的部分和状态,请参阅 ListBox 样式和模板

此控件的依赖属性可能由控件的默认样式设置。 如果属性由默认样式设置,则当控件出现在应用程序中时,该属性可能会从其默认值更改。 默认样式由应用程序运行时使用的桌面主题决定。

只有视觉对象属性已存在于控件的默认模板中并且已使用 TemplateBinding 设置时,设置该属性才有效。 在 通过创建 ControlTemplate 自定义现有控件的外观 一文的 更改控件的视觉结构 部分可以找到视觉属性列表。

为指定的路由事件添加路由事件处理程序,并将该处理程序添加到当前元素的处理程序集合中。 将 handledEventsToo 指定为 true ,可为已标记为由事件路由中的其他元素处理的路由事件调用所提供的处理程序。

(继承自 UIElement )

定位子元素,并确定 UIElement 的大小。 父元素从它们的 ArrangeCore(Rect) 实现(或者是 WPF 框架级别等效项)调用此方法,以便形成递归布局更新。 此方法产生第二次布局更新。

(继承自 UIElement )

对指定依赖属性的值进行强制。 通过对调用方 DependencyObject 上存在的依赖属性的属性元数据中所指定的任何 CoerceValueCallback 函数进行调用来完成此操作。

(继承自 DependencyObject )

更新 UIElement DesiredSize 。 父元素从其自身的 MeasureCore(Size) 实现调用此方法以形成递归布局更新。 调用此方法构成布局更新的第一个处理过程(“测量”处理过程)。

(继承自 UIElement )

每当更新此 FrameworkElement 的任何依赖属性的有效值时调用。 将在自变量参数中报告已更改的特定依赖属性。 重写 OnPropertyChanged(DependencyPropertyChangedEventArgs)

(继承自 FrameworkElement )

支持 FrameworkElement 的专用子类中的增量布局实现。 如果子元素包含无效属性,且该属性在元数据中标记为影响布局过程中父元素的测量或排列过程的因素,则调用 ParentLayoutInvalidated(UIElement)

(继承自 FrameworkElement )