2009-08-18 50 views
0

我有一個可觀察的項目集合,其中每個項目都有一個名稱和一個「組名稱」(都是字符串)。棘手的WPF造型問題 - 你能做到嗎?

這個棘手的部分是,在XAML中,我需要對此集合進行樣式設置,使得具有相同組名稱的所有項目都相鄰列出,組名稱顯示在頂部。

我設計了用戶控件,用於組名的佈局,以及每個項目的佈局。我已經玩過ItemsControl,但不知道如何設計它,以便具有相同組的項目以某種方式「合併」到使用通用ItemControl用戶控件作爲源的相同ItemsControl中,組名稱顯示在頂部。

我確實有這個工作,通過使用「組」的集合,以及每個組內的項目集合,因爲綁定完美地工作。但是,我沒有考慮到每個項目可能在一個以上的小組中(認爲一個人在「工作朋友」以及「同事」小組中,因此需要重複)。

任何意見或解決方案,我們非常感激:)

回答

1

首先,使用CollectionViewSource對項目進行排序:

<ItemsControl Source="{Binding Source={StaticResource SortedItems}}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <!-- stick your template for each item here --> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

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

然後從ItemsControl(或其他)綁定到它

+0

查看http://www.beacosta.com/blog/?p=17是一個很好的例子。 – 2009-08-18 13:45:41