WPF Listbox.selecteditems按照选择的顺序返回项目

Loc*_*e12 4 c# wpf listbox

我正在调试一个同事程序,并在WPF中遇到了这个问题.

看起来listBoxName.SelectedItems按用户从界面中选择项目的顺序返回所选项目的列表.这是一个问题,因为我需要保留项目的实际顺序.

例:

列表框是扩展选择模式,我的列表框包含一些东西:runfirst,runsecond,runthird

用户可以选择从列表框中选择要运行的内容.他们选择了runthird然后runfirst.这会导致runthird出现在列表的顶部,然后runfirst.我想我可以在运行foreach之前对列表进行排序,但我想知道是否有更简单的方法.

谢谢

Wad*_*e73 9

我所做的是使用LINQ以索引顺序返回所选项目.它采用VB.Net语法,但它很容易修复C#.

Dim selecteditems = From selecteditem As ListBoxItem In ListBox1.SelectedItems _
                    Select selecteditem _
                    Order By ListBox1.Items.IndexOf(selecteditem)
Run Code Online (Sandbox Code Playgroud)


Loc*_*e12 3

是的,我最终迭代了列表框中的所有项目,然后使用包含检查它是否在选定的项目中,如下所示

            foreach (<yourobject> item in listForSelection.Items)
            {
                if (listForSelection.SelectedItems.Contains(item))
                {
                     \\code here
                }
            }
Run Code Online (Sandbox Code Playgroud)

感谢大家的帮助