我有一个案例,我必须在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++;
}
如何确保它利用屏幕右侧空闲的所有空间? 我在这个问题上搜索了很多,但是找不到任何解决方案。任何帮助都非常感谢。
由于
答案 0 :(得分:1)
以这种方式设置列的宽度:
column.Width = new DataGridLength(1, DataGridLengthUnitType.Star);
&#34; 1&#34;当然,它定义了与其他列相比的相对宽度。就像在XAML 1*
中一样。