WPF中ListBox控件选择多个数据项
XAML:
<Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <StackPanel> <TextBlock>在控件中一次选择多个数据项:</TextBlock> <ListBox SelectionMode="Multiple"> <ListBoxItem>a</ListBoxItem> <ListBoxItem>b</ListBoxItem> <ListBoxItem>c</ListBoxItem> <ListBoxItem>d</ListBoxItem> <ListBoxItem>e</ListBoxItem> </ListBox> <TextBlock>在控件中使用Ctrl一次选择多个数据项:</TextBlock> <ListBox x:Name="lbx" SelectionMode="Extended"> <ListBox.ContextMenu> <ContextMenu> <MenuItem Header="Show" Click="btnShowSelectItems"></MenuItem> </ContextMenu> </ListBox.ContextMenu> <ListBoxItem>张三</ListBoxItem> <ListBoxItem>李四</ListBoxItem> <ListBoxItem>王五</ListBoxItem> <ListBoxItem>赵六</ListBoxItem> <ListBoxItem>孙七</ListBoxItem> </ListBox> </StackPanel> </Grid> </Window>
C#:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace WpfApplication1 { /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void btnShowSelectItems(object sender, RoutedEventArgs e) { string msg=string.Empty; List<string> list = new List<string>(); if (lbx.SelectedItems != null && lbx.SelectedItems.Count > 1) { //多选 foreach (ListBoxItem lbi in lbx.SelectedItems) { list.Add(lbi.Content.ToString()); } msg = string.Join(",", list); } else if (lbx.SelectedItems != null && lbx.SelectedItems.Count == 1) { //单选 msg = ((ListBoxItem)lbx.SelectedItem).Content.ToString(); } else { //没有选中任何项 } MessageBox.Show(msg); } } }
效果: