Рейтинг@Mail.ru

Сортировка ObservableCollection в WPF

Print Friendly, PDF & Email

Чтобы сделать сортируемую наблюдаемую коллекцию в WPF, можно создать методы расширения для типа ObservableCollection:

Imports System.Collections.ObjectModel
Imports System.Runtime.CompilerServices

Module ObservableCollectionExtensions

    <Extension>
    Public Sub Sort(Of T)(ByRef collection As ObservableCollection(Of T), comparison As Comparison(Of T))
        Dim sortableList = New List(Of T)(collection)
        sortableList.Sort(comparison)
        For i As Integer = 0 To sortableList.Count - 1
            collection.Move(collection.IndexOf(sortableList(i)), i)
        Next
    End Sub


 <Extension>
    Public Sub Sort(Of T As IComparable)(ByRef collection As ObservableCollection(Of T))
        If (collection.Count > 1) Then
            Dim sortableList As New List(Of T)(collection)
            Dim comp As Comparison(Of T) = Function(a, b) a.CompareTo(b)
            sortableList.Sort(comp)
            For i As Integer = 0 To sortableList.Count - 1
                collection.Move(collection.IndexOf(sortableList(i)), i)
            Next
        End If
    End Sub

End Module

Использование:

    MyCollection.Sort(Function(a, b) a.CompareTo(b))

или просто:

    MyCollection.Sort()
Ключевые слова: :

Поблагодарить автора:

Поделиться

Print Friendly, PDF & Email