WPF技术之ListBox控件

简介: WPF ListBox控件是一种用于显示和选择多个项的常用控件。它可以展示任意类型的数据,并允许用户通过鼠标或键盘进行选择操作

1.功能介绍

数据绑定:ListBox控件支持数据绑定,可以将数据源绑定到ItemsSource属性上,以显示列表中的项。这使得在界面更新时,ListBox能够自动刷新列表项。

自定义展示:ListBox提供了ItemTemplate属性,允许开发者定义每个列表项的展示方式。可以使用XAML或代码创建自定义模板,以满足不同的展示需求。

选择模式:ListBox可以通过SelectionMode属性控制选择模式。选择模式可以是单选(Single)或多选(Multiple),也可以禁用选择(None)。

事件处理:ListBox提供了SelectionChanged事件,该事件在选中项发生变化时被触发。开发者可以处理该事件来执行相应的操作,例如更新其他UI元素或执行特定的逻辑。

高度和宽度控制:ListBox具有自动滚动功能,当列表项超出可见区域时,会自动出现垂直滚动条。通过设置ListBox的Height和Width属性,可以限制其显示区域的大小。

虚拟化:ListBox支持虚拟化,这意味着它只在界面上显示可见区域内的列表项。对于大型数据源,虚拟化可以提高性能并减少内存占用。

增加和删除项:可以通过ListBox的Items集合进行动态添加、删除和修改列表项。这允许在运行时根据数据变化来更新ListBox中的项。

2.属性

  1. ItemsSource:获取或设置ListBox控件的数据源。
  2. SelectedItem:获取或设置当前选中的列表项。
  3. SelectedIndex:获取或设置当前选中的列表项的索引。
  4. ItemTemplate:获取或设置列表项的数据模板。
  5. DisplayMemberPath:获取或设置用于显示列表项文本的属性名。
  6. SelectedValue:获取或设置用于绑定选中项值的属性。
  7. SelectedValuePath:获取或设置用于绑定选中项值的路径。
<ListBoxItemsSource="{Binding ListItems}"SelectedIndex="0"SelectedItem="{Binding selectedItem}"><ListBoxItem>项目1</ListBoxItem><ListBoxItem>项目2</ListBoxItem><ListBoxItem>项目3</ListBoxItem></ListBox>
<ListBoxItemsSource="{Binding ListItems}"SelectedIndex="0"SelectedItem="{Binding selectedItem}"><ListBox.ItemTemplate><DataTemplate><StackPanel><TextBlockText="{Binding}"/></StackPanel></DataTemplate></ListBox.ItemTemplate></ListBox>
privateList<string>listItems;
publicList<string>ListItems    {
get { returnlistItems; }
set { SetProperty(reflistItems, value); }
    }
publicMainWindowViewModel()
    {
ListItems=newList<string>() { "项目1", "项目2", "项目3" };
    }

image.png

3.方法

  1. ScrollIntoView(object item):将指定的列表项滚动到可见区域。
  2. Add(object item):向ListBox中新增一个列表项。
  3. Remove(object item):从ListBox中移除指定的列表项。
  4. Clear():清空ListBox中的所有列表项。
<StackPanel><ButtonCommand="{Binding Add}"Content="增加"/><ListBoxName="listbox"ItemsSource="{Binding ListItems}"SelectedIndex="0"SelectedItem="{Binding selectedItem}"><ListBox.ItemTemplate><DataTemplate><StackPanel><TextBlockText="{Binding}"/></StackPanel></DataTemplate></ListBox.ItemTemplate></ListBox></StackPanel>
privateObservableCollection<string>listItems;
publicObservableCollection<string>ListItems    {
get { returnlistItems; }
set { SetProperty(reflistItems, value); }
    }
publicMainWindowViewModel()
    {
ListItems=newObservableCollection<string>() { "项目1", "项目2", "项目3" };
    }
privateDelegateCommandadd;
publicDelegateCommandAdd=>add?? (add=newDelegateCommand(ExecuteAdd));
voidExecuteAdd()
    {
ListItems.Add("项目4");
    }

image.png

4.事件

  1. SelectionChanged:当选中项的状态发生变化时引发的事件。
  2. PreviewMouseDown:当鼠标按下时引发的事件。
  3. PreviewKeyDown:当按下键盘按键时引发的事件。
<ListBoxSelectionChanged="listbox_SelectionChanged"Name="listbox"ItemsSource="{Binding ListItems}"SelectedIndex="0"SelectedItem="{Binding selectedItem}"><ListBox.ItemTemplate><DataTemplate><StackPanel><TextBlockText="{Binding}"/></StackPanel></DataTemplate></ListBox.ItemTemplate></ListBox>
privatevoidlistbox_SelectionChanged(objectsender, System.Windows.Controls.SelectionChangedEventArgse)
{
MessageBox.Show("更改了");
}
  1. image.png

5.枚举

  1. SelectionMode:定义ListBox的选择模式,包括Single(单选)和Multiple(多选)。
  2. ScrollBarVisibility:定义ListBox的滚动条可见性,包括Disabled(禁用)、Auto(自动显示)和Visible(始终可见)。
目录
相关文章
|
22天前
|
C# 开发者 Windows
基于Material Design风格开源、易用、强大的WPF UI控件库
基于Material Design风格开源、易用、强大的WPF UI控件库
|
5月前
|
C#
浅谈WPF之装饰器实现控件锚点
使用过visio的都知道,在绘制流程图时,当选择或鼠标移动到控件时,都会在控件的四周出现锚点,以便于修改大小,移动位置,或连接线等,那此功能是如何实现的呢?在WPF开发中,想要在控件四周实现锚点,可以通过装饰器来实现,今天通过一个简单的小例子,简述如何在WPF开发中,应用装饰器,仅供学习分享使用,如有不足之处,还请指正。
65 1
|
7月前
|
缓存 C# 虚拟化
WPF列表性能提高技术
WPF数据绑定系统不仅需要绑定功能,还需要能够处理大量数据而不会降低显示速度和消耗大量内存,WPF提供了相关的控件以提高性能,所有继承自`ItemsControl`的控件都支持该技术。
|
9月前
|
C# Windows
WPF技术之RichTextBox控件
WPF RichTextBox是Windows Presentation Foundation (WPF)中提供的一个强大的文本编辑控件,它可以显示富文本格式的文本,支持多种文本处理操作。
351 0
|
5月前
|
前端开发 C# 容器
浅谈WPF之控件拖拽与拖动
使用过office的visio软件画图的小伙伴都知道,画图软件分为两部分,左侧图形库,存放各种图标,右侧是一个画布,将左侧图形库的图标控件拖拽到右侧画布,就会生成一个新的控件,并且可以自由拖动。那如何在WPF程序中,实现类似的功能呢?今天就以一个简单的小例子,简述如何在WPF中实现控件的拖拽和拖动,仅供学习分享使用,如有不足之处,还请指正。
109 2
|
9月前
|
存储 自然语言处理 C#
WPF技术之Binding
WPF(Windows Presentation Foundation)是微软推出的一种用于创建应用程序用户界面的框架。Binding(绑定)是WPF中的一个重要概念,它用于在界面元素和数据源之间建立关联。通过Binding,可以将界面元素(如文本框、标签、列表等)与数据源(如对象、集合、属性等)进行绑定,从而实现数据的双向传递和同步更新。
143 2
WPF技术之Binding
|
22天前
|
C# 开发者 C++
一套开源、强大且美观的WPF UI控件库
一套开源、强大且美观的WPF UI控件库
139 0
|
6月前
|
算法 C# UED
浅谈WPF之控件模板和数据模板
WPF不仅支持传统的Windows Forms编程的用户界面和用户体验设计,同时还推出了以模板为核心的新一代设计理念。在WPF中,通过引入模板,将数据和算法的“内容”和“形式”进行解耦。模板主要分为两大类:数据模板【Data Template】和控件模板【Control Template】。
96 8
|
8月前
|
C#
WPF技术之动画系列-上下运动
本例子展现动画小球上下循环运动
128 0
|
9月前
|
前端开发 C# 容器
WPF技术之Command
WPF Command是一种在MVVM(Model-View-ViewModel)模式中用于处理用户界面交互的机制。它可以将用户界面事件(如按钮点击、菜单项选择等)与应用程序逻辑(命令处理)解耦,同时提供了一种便捷的方式来管理和执行命令
135 2