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
)