访问 WPF DataGrid 组标题的项目

问题描述 投票:0回答:2

我有一个对象集合,显示在分组的 WPF 中

DataGrid
。每个组中的所有项目有两个项目属性相同,我想将它们都放在组标题中。我可以显示用于通过
Name
绑定进行分组的属性,但如何显示另一个属性?我看不到任何方法来访问分组的项目。

wpf datagrid header
2个回答
0
投票

使用组项目的 Items 属性。您可能需要一个值转换器。


0
投票

您可以使用自定义 Expander.Header 和 Items[0] 元素的属性(例如 Items[0].GroupNameItems[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>
© www.soinside.com 2019 - 2024. All rights reserved.