WPF DataGrid组标头的筛选项

dm7nw8vv  于 2023-10-22  发布在  其他
关注(0)|答案(2)|浏览(89)

我有一个对象集合,显示在一个分组的WPF DataGrid中。对于每个组中的所有项目,有两个项目属性是相同的,我想将它们都放在组头中。我可以用Name绑定显示用于分组的属性,但如何显示另一个属性呢?我看不出有什么方法可以访问分组的项目。

e4eetjau

e4eetjau1#

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

x6yk4ghg

x6yk4ghg2#

您可以使用自定义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>

相关问题