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

时间:2012-03-15 13:46:28

标签: c# wpf grid code-behind

我需要从后面的代码动态创建一个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

3 个答案:

答案 0 :(得分:26)

您可以这样指定:

对于自动调整大小的列:

GridLength.Auto

对于星号柱:

new GridLength(1,GridUnitType.Star)

答案 1 :(得分:6)

我认为这有助于:

自动列:

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.aspxhttp://msdn.microsoft.com/en-us/library/system.windows.gridunittype.aspx

Greez Shounbourgh

答案 2 :(得分:6)

有三种类型的设置Width to Grid ColumnDefinitions:

对于百分比列:

 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"/>

希望它有所帮助!