2009-08-18 31 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