只能对列表框排序一次,不知道原因(WPF)

时间:2009-10-28 14:28:54

标签: listbox wpf-controls

问题:我的代码需要进行哪些更改才能让我排序多次?


信息:

我有一个列表框,其中包含我正在编写的程序中的1000个样本货件,我发现通过点击按钮对这些货件进行分类的最简单方法就是这样:

Private Sub Date_Ascending_Selected(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Date_Ascending.Selected
    ShipmentsList.Items.SortDescriptions.Add(New SortDescription("ReceivedOn", ListSortDirection.Ascending))
End Sub

这个问题是它只能工作一次。我目前有4个(Date Asc和Des,Status Asc和Des),可能有多达30个。我希望能够多次排序,但我不知道如何解决这个问题。我的直觉告诉我,问题在于“新”部分,但我不知道我应该把它放在哪里。

1 个答案:

答案 0 :(得分:0)

我猜你的假设是关于它是如何工作的,所以让我通过回答来帮助你和我...

如果您的目标是按A列和B列排序,则可以执行以下操作:

ShipmentsList.Items.SortDescriptions.Add(New SortDescription("A", _
    ListSortDirection.Ascending))
ShipmentsList.Items.SortDescriptions.Add(New SortDescription("B", _
    ListSortDirection.Ascending))

可能导致以下顺序:

A B

1个ž
2
2 d

如果您的目标是停止按A排序,现在按B排序,您可以执行以下操作:

' set initial sort
ShipmentsList.Items.SortDescriptions.Add(New SortDescription("A", _
    ListSortDirection.Ascending))
'... later, we now want to sort by B
ShipmentsList.Items.SortDescriptions.Clear()
ShipmentsList.Items.SortDescriptions.Add(New SortDescription("B", _
    ListSortDirection.Ascending))

通过清除排序描述的集合,您将删除A的SortDescription并将其替换为B,而不是为B添加一个。这将产生以下顺序:

A B
2
2 d

1 z