WPF怎么用代码实现ListBox控件的多行选择

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF怎么用代码实现ListBox控件的多行选择相关的知识,希望对你有一定的参考价值。

一般情况,你只要按着Ctrl选择就是可以多选,如果不想的话,你可以重写ItemsControl.ItemTemplate,例如

<ItemsControl.ItemTemplate>
  <DataTemplate>
    <StackPanel>
      <CheckBox   IsChecked="Binding ItemChecked,Mode=TwoWay"></CheckBox>
      <TextBlock x:Name="root"  Text="Binding ItemName" />
    </StackPanel>
     </DataTemplate>
</ItemsControl.ItemTemplate>
参考技术A 大概有一个名字叫 selecteditems 的属性,你找找看

2021-08-14 WPF控件专题 ListBox控件详解

1.ListBox控件介绍

其中包含可选择的项的列表

手动添加项

绑定数据源

两个ListBox中的项相互移动,不太适合指定ItemsSource,Items.Add方式添加项,可以灵活的添加或移除

2.具体案例

<Grid>
    <ListBox Name="lbClasses" SelectionMode="Multiple" ItemsSource="{Binding}"  HorizontalAlignment="Left" Height="253" Margin="136,63,0,0" VerticalAlignment="Top" Width="263" SelectionChanged="LbClasses_SelectionChanged">
        <!--<ListBoxItem Content="软件班" IsSelected="True" ></ListBoxItem>
        <ListBoxItem Content="数据班" ></ListBoxItem>
        <ListBoxItem Content="英语班" ></ListBoxItem>-->
    </ListBox>
</Grid>
private void Window_Loaded(object sender, RoutedEventArgs e)
{
    //绑定数据源
    // lbClasses.ItemsSource = GetClassInfos();
    lbClasses.DataContext = GetClassInfos();
    lbClasses.DisplayMemberPath = "ClassName";
    lbClasses.SelectedValuePath = "ClassId";
    lbClasses.SelectedIndex = 0;

    //如果要动态添加、移除项,情况与ComboBox 
    //lbClasses.Items.Add(11);
    //lbClasses.Items.Add("aaaa");

}

private List<ClassInfo> GetClassInfos()
{
    List<ClassInfo> list = new List<ClassInfo>();
    list.AddRange(new ClassInfo[]
    {
         new ClassInfo()
        {
            ClassId=1,
            ClassName="计算机一班"
        },
         new ClassInfo()
        {
            ClassId=2,
            ClassName="计算机二班"
        },
         new ClassInfo()
        {
            ClassId=3,
            ClassName="商务英语一班"
        },
          new ClassInfo()
        {
            ClassId=3,
            ClassName="商务英语二班"
        }
    });
    return list;
}

private void LbClasses_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    //选择项类型  由绑定或添加时数据的类型决定
   // MessageBox.Show(lbClasses.SelectedItem.ToString());//字符串 int
    //实体类型
    ClassInfo selItem = lbClasses.SelectedItem as ClassInfo;

}

以上是关于WPF怎么用代码实现ListBox控件的多行选择的主要内容,如果未能解决你的问题,请参考以下文章

wpf 界面中放了listbox想让他在最上层显示出来。

WPF中ListBox控件选择多个数据项

tkinter 怎么用Listbox做出多列的表格

WPF DataGrid怎么实现多行选中,不能使用CheckBox

2021-08-14 WPF控件专题 ListBox控件详解

wpf 下拉多选控件!