WPF DataGrid:设置列的宽度以动态占用所有空间

本文关键字:动态 空间 DataGrid 设置 WPF | 更新日期: 2023-09-27 17:50:18

我有一个情况,我必须在Datagrid中显示数据。DataGrid的Cols从2到20不等,我动态添加Cols。我只是想设置cols的宽度为"*",并使其利用屏幕上所有可用的空间。但是当我动态添加颜色时,我不能在代码中分配""的宽度。我试过Auto,但没有什么不同。我们可以做些什么来实现这个目标?我的XML:

           <DataGrid AutoGenerateColumns="False" HorizontalAlignment="Stretch"  Margin="20,0,0,0"  x:Name="outputGrid" VerticalAlignment="Top"  HorizontalScrollBarVisibility="Visible"
                VerticalScrollBarVisibility="Visible" BorderBrush="#FFB7B39D" Background="LightYellow" RowBackground="LightGray" AlternatingRowBackground="#FFFFFFF5" BorderThickness="2" 
                CanUserReorderColumns="False" CanUserSortColumns="False" FontSize="13" MinWidth="675"
                IsReadOnly="True" ColumnWidth="*"
                ColumnHeaderStyle="{DynamicResource ColumnHeaderStyle}" ClipboardCopyMode="IncludeHeader" Foreground="Black"    >
                <DataGrid.RowHeaderStyle>
                    <Style TargetType="DataGridRowHeader">
                        <Setter Property="Content" Value="{Binding Title}" />
                    </Style>
                </DataGrid.RowHeaderStyle>
            </DataGrid>

添加颜色的代码:

            foreach (Step2Model sm in xlsImpExp.Step2InfoDataModel.Step2ModelList)
        {
            DataGridTextColumn column = new DataGridTextColumn();
            column.Header = sm.LayerName;
            column.Width = DataGridLength.Auto;
            column.Binding = new Binding("Lay" + i + "Vol");
            outputGrid.Columns.Add(column);
            i++;
        }

我如何确保它利用了屏幕右侧的所有空闲空间?我对这个问题做了很多研究,但找不到任何解决办法。如有任何帮助,不胜感激。

谢谢

WPF DataGrid:设置列的宽度以动态占用所有空间

按如下方式设置列的宽度:

column.Width = new DataGridLength(1, DataGridLengthUnitType.Star);

"1"当然定义了相对于其他列的相对宽度。就像在XAML 1*