每个集合视图的WPF CompositeCollection分组

时间:2017-12-06 11:21:03

标签: c# wpf compositecollection

我已经设置了一个包含两个或更多集合的CompositeCollection,如下所示(简化):

<Grid.Resources>
    <CollectionViewSource x:Key="CollectionA" Source="{Binding CollectionA}" />
    <CollectionViewSource x:Key="CollectionB" Source="{Binding CollectionB}" />
    <CompositeCollection x:Key="FullCollection">
        <CollectionContainer Collection="{Binding Source={StaticResource CollectionA}}" />
        <CollectionContainer Collection="{Binding Source={StaticResource CollectionB}}" />
    </CompositeCollection>
</Grid.Resources>

...

<ListView ItemsSource="{StaticResource FullCollection}">
    <ListView.View>
        <GridView>

然后在GridView内显示一些列。但是,我似乎无法将GroupDescriptions添加到CompositeCollection,只能添加个别CollectionViewSource元素。

我想要做的是按照集合本身进行分组,以便ListView有一个标题,然后是第一个集合的内容,另一个标题,然后是第二个集合的内容等。

我是不是想要以这种方式将这些组合在一起?#/ p>

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,但下拉列表框出现了问题。解决方案是在集合之间简单地添加一些禁用项,例如适应您的问题可能是这样的:

<Grid.Resources>
    <CollectionViewSource x:Key="CollectionA" Source="{Binding CollectionA}" />
    <CollectionViewSource x:Key="CollectionB" Source="{Binding CollectionB}" />
    <CompositeCollection x:Key="FullCollection">
        <ListViewItem IsEnabled="False">Collection A:</ListViewItem>
        <CollectionContainer Collection="{Binding Source={StaticResource CollectionA}}" />
        <ListViewItem IsEnabled="False">Collection B:</ListViewItem>
        <CollectionContainer Collection="{Binding Source={StaticResource CollectionB}}" />
    </CompositeCollection>
</Grid.Resources>