如何过滤列表框的当前项列表?

时间:2011-12-23 00:37:14

标签: c# wpf sorting

我有一个列表框,其中填充了List项列表。该系列完全未经过滤。我想要完成的是创建过滤列表框的能力,并根据两个不同的标准重新排序列表框。第一个按状态过滤。我有一个包含所有不同状态的组合框。我已经完成了这样的事情:

public void ConstrainList()
        {
            if (((Lut_status)cboStatus.SelectedItem).ID != 8)
            {
                lbxHoldList.ItemsSource = allHolds.Where(a => a.FullHoldRecord.HoldStatus == ((Lut_status)cboStatus.SelectedItem).ID);
            }
            else
            {
                lbxHoldList.ItemsSource = allHolds.Where(a => a.FullHoldRecord.HoldStatus != 7);
            }
        }

这是在组合框选择事件触发时运行的方法。这很好用。我变得混乱的地方是我需要使用单选按钮根据3个标准​​中的一个来求助约束列表。所以我想我可以抓住ItemsSource对象,用linq对它进行排序,然后重新分配它,如:

lbxHoldList.ItemsSource = ((List<HoldDetails>)lbxHoldList.ItemsSource).OrderBy(a => a.FullHoldRecord.DateOpened);

这适用于第一个timem,但随着每个后续调用开始崩溃。我觉得这不是最好的方法。有人可以帮我修复这种方法或者告诉我更好的方法吗?感谢

2 个答案:

答案 0 :(得分:1)

您需要一个CollectionViewSource。 See this article了解更多信息,它非常易于使用。

答案 1 :(得分:0)

错误是什么?它可能会在演员身上崩溃到List<HoldDetails>。尝试投射到更通用的东西(如果你甚至需要施放)。