2009-08-18 11 views
0

私はアイテムの観察可能なコレクションを持っています。各アイテムは名前と "グループ名"(両方の文字列)を持っています。トリッキーなWPFスタイリングの問題 - できますか?

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

私は、表示されている各項目のレイアウトと同様に、グループ名のレイアウトのためのユーザーコントロールを設計しました。私はItemsControlで遊んだが、同じグループのアイテムが何らかの形で、そのアイテムのソースとしてジェネリックItemControlユーザーコントロールを使用する同じItemsControlにマージされるようにスタイルを設定する方法は知られていません。

私はバインディングが完全に機能するため、各グループ内のアイテムのコレクションを使用して、「グループ」のコレクションを使用してこの作業を行っていました。しかし、私は各項目が複数のグループに属することを考慮しなかった(「仕事の友人」グループと同様に「同僚」グループにいると考えるので、それを複製する必要がある)。

何かアドバイスや解決策をはるかに高く評価されている:)

答えて

1

まず、アイテムをソートする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> 
+0

良い例はhttp://www.beacosta.com/blog/?p=17をご覧ください。 –

関連する問題