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 DataGrid怎么实现多行选中,不能使用CheckBox