ListView中按类别分组项目

时间:2012-05-18 07:29:55

标签: wpf listview collections

我有一个项目集合。 ObservableCollection<Channel> Channels;

每个Channel包含名称类别属性。我想在ListView中显示此集合。此外,我想点击类别扩展程序,然后显示包含频道名称的频道列表。

你能给我一些建议吗?

2 个答案:

答案 0 :(得分:1)

为单个频道制作一个DataTemplate:

<DataTemplate x:Key="ChannelTemplate">
    <Expander Header="{Binding Name}">
        <ListBox ItemsSource="{Binding CategoryProperties}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel>
                        <TextBlock Text="{Binding prop1}"/>
                        <TextBlock Text="{Binding prop2}"/>
                    </StackPanel>
                </DataTemplate>
            </ListBox>
        </ListBox>
    </Expander>
</DataTemplate>

然后在ListBox / View中使用它:

<ListBox ItemsSource="{Binding Channels}" ItemTemplate="{StaticResource ChannelTemplate}" />

这假定您将Window / UserControl的DataContext属性设置为包含名为Channels的属性的对象。

修改

您可能还想要look at CollectionViewSource to use the built-in grouping

答案 1 :(得分:0)

您可以尝试查看此示例:http://msdn.microsoft.com/en-us/library/ms771309(v=VS.90).aspx,我认为这应该可以让您清楚了解如何继续。