0

観察可能なアイテムのコレクションがあり、各アイテムには名前と「グループ名」(両方の文字列)があります。

トリッキーな部分は、XAMLで、同じグループ名を持つすべてのアイテムが隣り合ってリストされ、グループ名が上部に表示されるように、このコレクションのスタイルを設定する必要があることです。

グループ名のレイアウトと、表示される各アイテムのレイアウトのユーザーコントロールを設計しました。私はItemsControlをいじってみましたが、同じグループのアイテムが、ソースとして汎用ItemControlユーザーコントロールを使用し、グループ名が上に表示される同じItemsControlに何らかの形で「マージ」されるようにスタイルを設定する方法がわかりません。

バインディングが完全に機能するため、各グループ内のアイテムのコレクションとともに「グループ」のコレクションを使用してこれを機能させました。ただし、各アイテムが複数のグループに含まれている可能性があることは考慮していません(1人の人が「仕事仲間」グループと「同僚」グループに属していると考えてください。したがって、複製する必要があります)。

アドバイスや解決策は大歓迎です:)

4

1 に答える 1

1

まず、 a を使用しCollectionViewSourceてアイテムを並べ替えます。

<CollectionViewSource  x:Key="SortedItems" Source="{Binding YourUnsortedItems}">
    <CollectionViewSource.SortDescriptions>
        <scm:SortDescription PropertyName="GroupName"/>
    </CollectionViewSource.SortDescriptions>
</CollectionViewSource>

ItemsControl次に、あなたの(または何でも)からそれにバインドします:

<ItemsControl Source="{Binding Source={StaticResource SortedItems}}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <!-- stick your template for each item here -->
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
于 2009-08-18T12:47:38.373 に答える