在设置 ItemSource 之前压缩 WPF DataGrid 列 headers

WPF DataGrid column headers squeezed before ItemSource is set

我目前在 WPF 中有一个只有两列的数据网格,当我试图将它绑定到它的特定项目源时,它的项目源是在 .cs 代码中设置的,但最初它没有引用任何项目源。问题是,如果还没有项目源,即使我指定了列的宽度,列也会被挤压。 (在附图中)

在我添加 部分之前,这些列看起来很好,请问我是否遗漏了什么或者我做错了什么。 下面是我的 .xaml 中用于此数据网格的代码。

<DataGrid Visibility="Visible" 
                              x:Name="IFCInfoDataGrid" Width="auto" Height="auto" HeadersVisibility="Column"
                              AutoGenerateColumns="False" Margin="12" IsReadOnly="True" Grid.ColumnSpan="2" 
                              SelectionUnit="FullRow" IsSynchronizedWithCurrentItem="False" >

                        <DataGrid.CellStyle>
                            <Style TargetType="DataGridCell">
                                <Setter Property="BorderThickness" Value="0"/>
                                <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
                            </Style>
                        </DataGrid.CellStyle>

                        <DataGrid.GroupStyle>
                            <GroupStyle>
                                <GroupStyle.HeaderTemplate>
                                    <DataTemplate>
                                        <DockPanel Background="LightBlue">
                                            <TextBlock Text="{Binding Path=Name}" Foreground="Blue" Margin="30,0,0,0" Width="100" />
                                        </DockPanel>
                                    </DataTemplate>
                                </GroupStyle.HeaderTemplate>

                                <GroupStyle.ContainerStyle>
                                    <Style TargetType="{x:Type GroupItem}" >
                                        <Setter Property="Margin" Value="0,0,0,5" />
                                        <Setter Property="Template">
                                            <Setter.Value>
                                                <ControlTemplate TargetType="{x:Type GroupItem}">
                                                    <Expander
                                                        BorderBrush="#FF002255"
                                                        IsExpanded="True"
                                                        Background="Tan"
                                                        BorderThickness="0,0,0,1">
                                                        <Expander.Header>
                                                            <StackPanel Orientation="Horizontal">
                                                                <TextBlock VerticalAlignment="Center" FontWeight="Bold" Text="{Binding Path=Name}" Width="200" />
                                                            </StackPanel>
                                                        </Expander.Header>
                                                        <Expander.Content>
                                                            <ItemsPresenter />
                                                        </Expander.Content>
                                                    </Expander>
                                                </ControlTemplate>
                                            </Setter.Value>
                                        </Setter>
                                    </Style>
                                </GroupStyle.ContainerStyle>
                            </GroupStyle>
                        </DataGrid.GroupStyle>

                        <DataGrid.Columns>
                            <DataGridTextColumn Binding="{Binding IFCParameter}" Header="IFC Parameter" Width="0.5*" 
                                                ElementStyle="{StaticResource DataGridRowStyle}" IsReadOnly="True" CanUserSort="False"/>
                            <DataGridTextColumn Binding="{Binding ParameterValue}" Header="Value" Width="0.5*" 
                                                ElementStyle="{StaticResource DataGridRowStyle}" IsReadOnly="True" CanUserSort="False"/>
                        </DataGrid.Columns>
                    </DataGrid>

<GroupStyle.Panel> 元素设置为带有 DataGridRowsPresenterItemsPanelTemplate:

<DataGrid.GroupStyle>
    <GroupStyle>
        <GroupStyle.Panel>
            <ItemsPanelTemplate>
                <DataGridRowsPresenter/>
            </ItemsPanelTemplate>
        </GroupStyle.Panel>

        <GroupStyle.HeaderTemplate>
            ...
        </GroupStyle.HeaderTemplate>

        <GroupStyle.ContainerStyle>
            ...
        </GroupStyle.ContainerStyle>
    </GroupStyle>
</DataGrid.GroupStyle>