WPF ItemsControl ItemTemplate与GroupStyle的边框

时间:2010-10-07 16:55:51

标签: wpf grouping itemscontrol

这是我第一次发布图片,所以希望结果很好(图片胜过千言万语,而且我不想输入千言万语)。但是,下图是我正在努力实现的目标。

我有一组对象,我需要按属性“Group”进行分组。我正在使用一个CollectionViewSource,它绑定到我正在为我进行分组的数据源。

我正在使用ItemsControl控件(但可以轻松使用其他控件)来显示此信息。我可以通过酒店对信息进行分组,但我希望能够用边框包围整个组。我不想整个小组围绕小组中的每个项目。

如何使用整个组周围的边框来完成下图所示的内容?

alt text

1 个答案:

答案 0 :(得分:2)

这样的事情应该可以解决问题。将此作为您的团队风格。您可能希望对此进行更多自定义,但您应该能够从此片段中获得一般性的想法。

最重要的是要绑定到GroupItem。基本上,GroupItem上有3个属性。名称(组),ItemCount(分组中的项目数)和项目本身。

<ControlTemplate TargetType="{x:Type GroupItem}">

    <Border BorderBrush="Black" BorderThickness="1" Margin="5">
        <StackPanel>
            <TextBlock Text="{Binding Name}"/>
            <Border BorderBrush="Black" BorderThickness="1" Margin="0,0,0,0">
                <ItemsPresenter />
            </Border>
        </StackPanel>
    </Border>

</ControlTemplate>

修改 对项目集合进行分组时,源不是项目的集合,而是GroupItems的集合,其中包含集合中属于该组的项目。这就是x:Type是GroupItem的原因。此处不需要绑定,除了您希望显示的GroupItem的属性之外。

你应该把它放在<ItemControl> XAML中,如下所示:

    <ItemsControl>
        <ItemsControl.GroupStyle>
<!-------------- style from above goes here --------------->
        <ItemsControl.GroupStyle/>
    <ItemsControl/>

here是一篇关于在WPF中进行分组以帮助您的文章。