这是我第一次发布图片,所以希望结果很好(图片胜过千言万语,而且我不想输入千言万语)。但是,下图是我正在努力实现的目标。
我有一组对象,我需要按属性“Group”进行分组。我正在使用一个CollectionViewSource,它绑定到我正在为我进行分组的数据源。
我正在使用ItemsControl控件(但可以轻松使用其他控件)来显示此信息。我可以通过酒店对信息进行分组,但我希望能够用边框包围整个组。我不想整个小组围绕小组中的每个项目。
如何使用整个组周围的边框来完成下图所示的内容?
答案 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中进行分组以帮助您的文章。