1

私は持っていますObservableCollection<string>

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

Windowの AListBoxは、この Collection にバインドします。Window Loaded イベントでは、並べ替えとグループ化のロジックを の基になる ICollectionView に割り当てていCollectionます。

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));
}

TestGroupConverterconvert メソッドで文字列の長さを返します。

結果は次のとおりです。

ここに画像の説明を入力

グループが昇順で並べ替えられ、その中の項目が降順で並べ替えられることを期待していました。しかしSortDescription、グループ内の for アイテムが使用されていないようです — 降順でソートされていません。

何が間違っているのかわかりません。

4

1 に答える 1

3

グループ化を使用し、同じプロパティを持つ 2 つの並べ替えの説明がある場合でも、すべての並べ替えの説明がアイテムに適用されます。残念ながら、変換された値でソートすることはできませんが、最初にプロパティSortDescriptionでソートするように変更できますLength

defaultView.SortDescriptions.Add(new SortDescription("Length", ListSortDirection.Ascending));
defaultView.SortDescriptions.Add(new SortDescription("", ListSortDirection.Descending));
于 2016-04-16T20:33:58.833 に答える