如何在WPF中获取ListBox中的多个选定项?

5

我对如何从WPF中的列表框检索多个选定值感到困惑。

在XAML中,我有以下带有多选模式的列表框。

 <ListBox Height="100" HorizontalAlignment="Left" Margin="139,207,0,0" Name="listBox1" VerticalAlignment="Top" Width="120" SelectionChanged="listBox1_SelectionChanged" SelectionMode="Multiple" />    

 <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="319,220,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />

如何在foreach循环中进行检查?
        foreach (ListItem li in listBox1.Items)
        {
                ?? // how to check li is selected or not
        }

阅读文档li.Selected - Pierre-Luc Pineault
2个回答

10

1
哦,谢谢。应该是SelectedItems而不是items。 - user2118542
谢谢您的回答 - 有没有办法获得每个SelectedItem包含的类? - BenKoshy
1
抱歉,我不确定你的意思。SelectedItems 是从你的 Items 或 ItemsSource 集合中选择的项目集,并且它们是相同类型的。如果你在其中有多个类,你可以使用 typeof 或 nameof 运算符来区分它们或显示它们的名称。 - LPL
谢谢您的回复 - 我的意思是:每个选定的项目都代表了我在代码中定义的Person类的一个实例。我想通过特定的selectedItem实例来获取相同的person实例 - 有什么方法可以做到这一点吗? - BenKoshy
1
每个SelectedItem都是对应Item实例的引用。这个回答解决了你的问题吗?或许最好作为一个新问题来问,因为它与此问题无关,而且我仍然不确定问题在哪里。抱歉。 - LPL

0

另一个例子

int j = 0;
for (int i = 0; i < lbItems.Items.Count; i++)
{
   if (lbItems.Items[i] == lbItems.SelectedItems[0])
   j++;
}
MessageBox.Show(lbItems.Items.IndexOf(lbItems.SelectedItems[0]).ToString()
+ string.Format("\r\nThere are {0} occurences of this object in this list",j) )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接