我有一个情况,我必须在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++;
}
我如何确保它利用了屏幕右侧的所有空闲空间?我对这个问题做了很多研究,但找不到任何解决办法。如有任何帮助,不胜感激。
谢谢
按如下方式设置列的宽度:
column.Width = new DataGridLength(1, DataGridLengthUnitType.Star);
"1"当然定义了相对于其他列的相对宽度。就像在XAML 1*
。