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

时间:2014-03-15 07:41:06

标签: c# wpf datagrid column-width

我有一个案例,我必须在Datagrid中显示数据。 DataGrid的Cols可能在2到20之间变化,我动态添加cols。我只想将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>

添加cols的代码:

            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++;
        }

如何确保它利用屏幕右侧空闲的所有空间? 我在这个问题上搜索了很多,但是找不到任何解决方案。任何帮助都非常感谢。

由于

1 个答案:

答案 0 :(得分:1)

以这种方式设置列的宽度:

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

&#34; 1&#34;当然,它定义了与其他列相比的相对宽度。就像在XAML 1*中一样。