2009-06-12 17 views
12

Sıralama için SortDescriptions özelliğine sahip olan CollectionViewSource'dan türetilen bir koleksiyonu sıralamaya çalışıyorum. Ne yazık ki, kendi özel IComparer'ımı kullanabilmem gerekiyor, ancak bunu yapmanın bir yolunu bulamıyorum. Datagrid düşünün ve kendi çoklu sütun sıralama algoritmam var. Bunu yapmanın bir yolunun, CollectionViewSource ile gerçek veri kaynağım arasında ek bir katman olan CollectionChanged'i uygulayan bir koleksiyon kullanmak olduğunu düşünüyorum, ancak herhangi bir öneri varsa gerçekten daha iyi bir yolu tercih ederim.Özel IComparer kullanarak CollectionViewSource Sıralama

cevap

13

Bea Stollnitz özel bir örnekleme örneğine sahiptir here.

bu maddenin önemli bir nokta, bir zayıf ICollection veya IEnumerable arabirim yerine CollectionViewSourceIList bir üzere uygulanmasını bağlamaktır. Bununla, View özelliği, CollectionView yerine ListCollectionView örneğini döndürür. Özel sıralamanızı yapmak için IComparer atamak için ListCollectionView.CustomSort kullanabilirsiniz. İşleri kolaylaştırmak için, bir bütün olarak bir ders yerine Comparison temsilci kullanmak için Comparer<T>.Create yöntemini kullanabilirsiniz.

+1

Bu makalenin temel noktası, 'KoleksiyonViewSource'unu daha zayıf bir' ICollection 'veya' IEnumerable 'arabiriminden ziyade bir' IList 'uygulamasına bağlamaktır. Bununla, 'View' özelliği 'CollectionView' yerine bir' ListCollectionView' örneğini döndürür. Özel sıralamanızı yapmak için 'IComparer 'atamak için' ListCollectionView.CustomSort' kullanabilirsiniz. İşleri daha kolay hale getirmek için ek olarak, bir "Karşılaştırma" temsilcisini kullanmak üzere ['Comparer .Create'] (http://msdn.microsoft.com/en-gb/library/hh737198.aspx) yöntemini kullanabilirsiniz. bütün sınıf. – ygoe

İlgili konular