我有一个对象集合,显示在分组的 WPF 中
DataGrid
。每个组中的所有项目有两个项目属性相同,我想将它们都放在组标题中。我可以显示用于通过 Name
绑定进行分组的属性,但如何显示另一个属性?我看不到任何方法来访问分组的项目。
使用组项目的 Items 属性。您可能需要一个值转换器。
您可以使用自定义 Expander.Header 和 Items[0] 元素的属性(例如 Items[0].GroupName 和 Items[0].GroupKey)。
正如您所说,组中每一行的两个项目属性都是相同的,因此第一行将包含您需要的内容。该组中至少应有一个元素,这样就不会出现超出范围的异常。
<DataGrid.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander>
<Expander.Header>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
VerticalAlignment="Center"
Text="{Binding Items[0].GroupName}"/>
<TextBlock Grid.Column="1"
VerticalAlignment="Center"
Text="{Binding Items[0].GroupKey}"/>
</Grid>
</Expander.Header>
<Expander.Content>
<ItemsPresenter/>
</Expander.Content>
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</DataGrid.GroupStyle>