所以我手上有一个小问题,所以我有一个Observablecollection包含一些用户可以选择的项目,具体取决于设置列表可以排序升序(新项目将在列表的底部)或降序(列表顶部的新项目)。现在我的问题出现了,当列表越来越大(即:20多项)应用程序变慢。
所以我有一个功能,所以对列表进行排序
If Globals.isSorterenSelected Then
If Globals.SorterenValue = "Ascending" Then
Dim l As List(Of clsOrderItems) = (From o In OrderregelsGegroepeerd).OrderBy(Function(f) f.Gang).ThenBy(Function(f) f.item).OrderByDescending(Function(f) f.hoofdartikel).ToList
OrderregelsGegroepeerd = New ObservableCollection(Of clsOrderItems)(l)
Else
Dim l As List(Of clsOrderItems) = (From o In OrderregelsGegroepeerd).OrderBy(Function(f) f.Gang).ThenByDescending(Function(f) f.hoofdartikel).OrderByDescending(Function(f) f.item).ToList
OrderregelsGegroepeerd = New ObservableCollection(Of clsOrderItems)(l)
End If
Else
Dim l As List(Of clsOrderItems) = (From o In OrderregelsGegroepeerd).OrderBy(Function(f) f.Gang).ThenBy(Function(f) f.item).OrderByDescending(Function(f) f.hoofdartikel).ToList
OrderregelsGegroepeerd = New ObservableCollection(Of clsOrderItems)(l)
End If
有没有其他方法可以对“OrderregelsGegroepeerd”进行排序而无需重新创建整个Observablecollection?
答案 0 :(得分:1)
'OrderregelsGegroepeerd = New ObservableCollection(Of clsOrderItems)(l)
Dim NewIndex As Integer = 0
For Each regel As clsOrderItems In l
Dim idx As Integer = OrderregelsGegroepeerd.IndexOf(regel)
OrderregelsGegroepeerd.Move(idx, NewIndex)
NewIndex = NewIndex + 1
Next
所以这就是我提出的方式,现在我对新产品背后的转换器只有一个小问题,但这不是什么大问题!感谢keyboardP的回复,我实际上只是在我发现问题之前才看到它,但仍然是一个很好的信息来源。