ICollectionView中的组内的项目未排序

时间:2016-04-16 17:25:52

标签: c# wpf sorting icollectionview

我有ObservableCollection<string>

public ObservableCollection<string> Collection { get; set; } = new ObservableCollection<string>
{
    "AA",
    "BB",
    "CC",
    "C",
    "A",
    "C",
    "BBB",
    "AAA",
    "CCC"
};

Window中的ListBox绑定到此Collection。在Window Loaded事件中,我将排序和分组逻辑分配给Collection的基础ICollectionView。

private void MainWindow_OnLoaded(object sender, RoutedEventArgs e)
{
    ICollectionView defaultView = CollectionViewSource.GetDefaultView(this.Collection);
    defaultView.GroupDescriptions.Add(new PropertyGroupDescription(null, new TestGroupConverter()));

    defaultView.SortDescriptions.Add(new SortDescription("", ListSortDirection.Ascending));
    defaultView.SortDescriptions.Add(new SortDescription("", ListSortDirection.Descending));
}

TestGroupConverter在其convert方法中返回字符串的长度。

所以结果如下:

enter image description here

我希望这些组按升序排序,其中的项目按降序排序。但似乎未使用组内商品的SortDescription - 它未按降序排序。

我不确定我做错了什么。

1 个答案:

答案 0 :(得分:3)

即使您使用分组,并且您有两个具有相同属性的排序说明,所有排序说明也适用于项目。很遗憾,您无法按转换后的值排序,但您可以先更改SortDescription以按Length属性排序

defaultView.SortDescriptions.Add(new SortDescription("Length", ListSortDirection.Ascending));
defaultView.SortDescriptions.Add(new SortDescription("", ListSortDirection.Descending));
相关问题