数据网格分组显示您分组的字段值作为标头

本文关键字:字段 数据网 网格 显示 数据 | 更新日期: 2023-09-27 18:19:19

我正在尝试在DataGrid中分组项目并显示字段的值,它在标题中分组。例如:

Ford - 3项F150野马雪佛兰- 2件

我看过的每个例子都向我展示了完全相同的东西,似乎对我来说根本不起作用。

<DataGrid IsSynchronizedWithCurrentItem="True" SelectionUnit="FullRow"  RowHeaderWidth="0"  VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Visible"  IsReadOnly="True" ItemsSource="{Binding View}"  SelectedItem="{Binding Path=SelectedContingency, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" AutoGenerateColumns="False"   >
           <DataGrid.GroupStyle>
                <GroupStyle>
                    <GroupStyle.Panel>
                        <ItemsPanelTemplate>
                            <DataGridRowsPresenter/>
                        </ItemsPanelTemplate>
                    </GroupStyle.Panel>
                        <GroupStyle.ContainerStyle>
                        <Style TargetType="{x:Type GroupItem}">
                            <Setter Property="Template">
                                <Setter.Value>
                                    <ControlTemplate TargetType="{x:Type GroupItem}">
                                        <Expander>
                                            <Expander.Header>
                                                <StackPanel Orientation="Horizontal">
                                                    <TextBlock Text=" wtf " />
                                                    <TextBlock Text="{Binding Path=Description, RelativeSource={RelativeSource AncestorType=DataGrid}}" />
                                                    <TextBlock Text="{Binding Path=ItemCount}"/> 
                                                    <TextBlock Text=" Items" />
                                                </StackPanel>
                                            </Expander.Header>
                                            <ItemsPresenter />
                                        </Expander>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </GroupStyle.ContainerStyle>
                </GroupStyle>
            </DataGrid.GroupStyle>

也有一段时间了,但没有什么区别

<GroupStyle.HeaderTemplate>
                <DataTemplate>
                    <StackPanel>
                        <TextBlock Text="{Binding Path=Description}" />
                    </StackPanel>
                </DataTemplate>
            </GroupStyle.HeaderTemplate>

在这里我没有得到描述,而是得到(wtf 3项)等。我尝试过不同的领域,但一无所获。我已经尝试了所有的变化,我能想到的字段在扩展头。

需要什么魔法才能使这个共同特性发挥作用?

数据网格分组显示您分组的字段值作为标头

这个问题的答案是,在示例中它们绑定到字段名。所以当你在例子中看到:

<Expander.Header>
                                            <StackPanel Orientation="Horizontal"> 
                                                <TextBlock Text="{Binding Path=Name"} /> 
                                                <TextBlock Text="{Binding Path=ItemCount}"/> 
                                                <TextBlock Text=" Items" />
                                            </StackPanel>
                                        </Expander.Header>

您可能会像我一样假设使用了"Name",因为这也是他们选择绑定的字段。事实并非如此。"Name"是您绑定到的具有该值的GroupItem上的实际属性。

所以无论你在哪个字段上分组,你总是通过绑定到GroupItem上的"Name"来显示该字段。