动态设置网格列/行宽/高

Posted

技术标签:

【中文标题】动态设置网格列/行宽/高【英文标题】:Set Grid Column/Row width/Height dynamically 【发布时间】:2012-04-01 00:51:53 【问题描述】:

我需要从后面的代码动态创建一个 WPF 网格。这没关系,我可以这样做,以便我设置内容宽度,但我需要做的是设置它们,以便当我调整窗口大小时,控件会动态调整大小

var col = new ColumnDefinition();
col.Width = new System.Windows.GridLength(200);
grid1.ColumnDefinitions.Add(col);

这将产生 XAML

<Grid.ColumnDefinitions>
     <ColumnDefinition Width="200"></ColumnDefinition>
</Grid.ColumnDefinitions>

但我需要的是使用 * 或问号,即。

<Grid.ColumnDefinitions>
     <ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>

但是在从后面的代码创建时,WidthValue 不支持 * 或问号 a 吗?

【问题讨论】:

【参考方案1】:

你可以这样指定:

对于自动调整大小的列:

GridLength.Auto

对于星形大小的列:

new GridLength(1,GridUnitType.Star)

【讨论】:

【参考方案2】:

Grid ColumnDefinitions 有 3 种设置宽度:

百分比列:

 yourGrid.ColumnDefinitions[0].Width = new GridLength(1, GridUnitType.Star); 

在 xaml 中:

<ColumnDefinition Width="1*"/>

对于像素列

yourGrid.ColumnDefinitions[0].Width = new GridLength(10, GridUnitType.Pixel);
yourGrid.ColumnDefinitions[0].Width = new GridLength(10); 

在 xaml 中:

<ColumnDefinition Width="10"/>

对于自动列

yourGrid.ColumnDefinitions[0].Width = GridLength.Auto;

在 xaml 中:

<ColumnDefinition Width="Auto"/>

希望对你有帮助!

【讨论】:

【参考方案3】:

我认为这会有所帮助:

对于自动列:

ColumnDefinition cd = new ColumnDefinition();
cd.Width = GridLength.Auto;

或比例网格长度:

ColumnDefinition cd = new ColumnDefinition();
cd.Width = new GridLength(1, GridUnitType.Star);

或查看: http://msdn.microsoft.com/en-us/library/system.windows.gridlength.aspx 和 http://msdn.microsoft.com/en-us/library/system.windows.gridunittype.aspx

格力兹 肖恩堡

【讨论】:

以上是关于动态设置网格列/行宽/高的主要内容,如果未能解决你的问题,请参考以下文章

怎么设置excel的行高和行宽

Grid 网格布局

怎么设置dialog的宽和高度

如何使用列设置动态创建角剑道网格列?

LaTeX表格行宽列间距设置

LaTeX表格行宽列间距设置