2011-01-20 7 views
13

WPFでは、コレクションビューソースはソート(SortDescriptions)とグループ化(GroupDescriptions)を可能にします。しかし、私はグループを注文する方法を見つけることができません。出来ますか?WPFのグループを注文するには

答えて

21
<CollectionViewSource x:Key="cvs" Source="{Binding Source={StaticResource animals}, Path=AnimalList}"> 
    <CollectionViewSource.GroupDescriptions> 
     <PropertyGroupDescription PropertyName="Category"/> 
    </CollectionViewSource.GroupDescriptions> 
    <CollectionViewSource.SortDescriptions> 
     <scm:SortDescription PropertyName="Category" /> 
     <scm:SortDescription PropertyName="Name" /> 
    </CollectionViewSource.SortDescriptions> 
</CollectionViewSource> 

は、私たちが最初にグループをソートした後、グループ内のアイテムすることができます。 (もう)は、ドメインbea.stollnitz.comが存在しないという事実にもかかわらず、ここで

http://bea.stollnitz.com/blog/?p=17

+0

複数のチェックのために

:GroupDescriptions'はGroupDescription' 'から派生する任意のクラスを含めることができますが、' - を有しますすべての入力オブジェクトを出力オブジェクトに変換する 'GroupNameFromItem'メソッドをオーバーライドするだけです。' SortDescriptions'は、プロパティ名のみを対象とするSTRUCT(!!!!!) 'SortDescription'をサポートしています。その2つの世界、構造体と抽象クラスを関連付ける方法はありません。 – springy76

+0

これは私にとってはうまくいきませんでした...私は、(xamlではなく)コードの背後にある 'ICollectionView'を使っています。 – JobaDiniz

4

グループ分けは可能ですが、それほど簡単ではありません。この例で説明します。あなたがグループ要素に希望とグループを並べ替える場合は

class CollectionElement 
{ 
    public string Name {get; set; } 
    public string Group {get; set; } 
} 

は、アルファベット順、次にアルファベット順に、あなたは次のことを行う必要があり、各グループ内の要素を並べ替える:

  1. Groupプロパティ
  2. を参照PropertyGroupDescriptionを追加Groupを参照SortDescriptionを追加
  3. Add SortDescription参照の追加Name

グルーピングプロセスは、次のように効果的に機能すると思われます。を既に反復しました。要素が結果としてソートされました。要素フォームの不明なグループに遭遇した場合 - グループを作成し、それをグループリストに追加します。既存のグループから要素を検出した場合は、その要素を既存のグループに追加します。 (実際の実装は異なる場合があります)。したがって、グループを表示する順序で要素がソートされていれば、グループを効果的に並べ替えることができます。ちょうど2つのSortDescriptions.Adding 2つのソート説明を追加

関連する問題