1.功能介绍
数据绑定:ListBox控件支持数据绑定,可以将数据源绑定到ItemsSource属性上,以显示列表中的项。这使得在界面更新时,ListBox能够自动刷新列表项。
自定义展示:ListBox提供了ItemTemplate属性,允许开发者定义每个列表项的展示方式。可以使用XAML或代码创建自定义模板,以满足不同的展示需求。
选择模式:ListBox可以通过SelectionMode属性控制选择模式。选择模式可以是单选(Single)或多选(Multiple),也可以禁用选择(None)。
事件处理:ListBox提供了SelectionChanged事件,该事件在选中项发生变化时被触发。开发者可以处理该事件来执行相应的操作,例如更新其他UI元素或执行特定的逻辑。
高度和宽度控制:ListBox具有自动滚动功能,当列表项超出可见区域时,会自动出现垂直滚动条。通过设置ListBox的Height和Width属性,可以限制其显示区域的大小。
虚拟化:ListBox支持虚拟化,这意味着它只在界面上显示可见区域内的列表项。对于大型数据源,虚拟化可以提高性能并减少内存占用。
增加和删除项:可以通过ListBox的Items集合进行动态添加、删除和修改列表项。这允许在运行时根据数据变化来更新ListBox中的项。
2.属性
- ItemsSource:获取或设置ListBox控件的数据源。
- SelectedItem:获取或设置当前选中的列表项。
- SelectedIndex:获取或设置当前选中的列表项的索引。
- ItemTemplate:获取或设置列表项的数据模板。
- DisplayMemberPath:获取或设置用于显示列表项文本的属性名。
- SelectedValue:获取或设置用于绑定选中项值的属性。
- 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" }; }
3.方法
- ScrollIntoView(object item):将指定的列表项滚动到可见区域。
- Add(object item):向ListBox中新增一个列表项。
- Remove(object item):从ListBox中移除指定的列表项。
- 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"); }
4.事件
- SelectionChanged:当选中项的状态发生变化时引发的事件。
- PreviewMouseDown:当鼠标按下时引发的事件。
- 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("更改了"); }
5.枚举
- SelectionMode:定义ListBox的选择模式,包括Single(单选)和Multiple(多选)。
- ScrollBarVisibility:定义ListBox的滚动条可见性,包括Disabled(禁用)、Auto(自动显示)和Visible(始终可见)。