我有一个对象集合,显示在一个分组的WPF DataGrid中。对于每个组中的所有项目,有两个项目属性是相同的,我想将它们都放在组头中。我可以用Name绑定显示用于分组的属性,但如何显示另一个属性呢?我看不出有什么方法可以访问分组的项目。
DataGrid
Name
e4eetjau1#
使用组项的Items属性。您可能需要一个值转换器。
x6yk4ghg2#
您可以使用自定义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>
2条答案
按热度按时间e4eetjau1#
使用组项的Items属性。您可能需要一个值转换器。
x6yk4ghg2#
您可以使用自定义Expander.Header和Items[0]元素的属性(例如Items[0].GroupName和Items[0].GroupKey)。
正如您所说,组中每一行的两个项目属性都是相同的,因此第一行将包含您需要的内容。组中应该至少有一个元素,这样就不会有超出范围的异常。