2012-03-15 66 views
13

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

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

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

但是从代码中创建后面当WidthValue不支持*或问号?

回答

24

你可以像这样指定它:

对于汽车大小的列:

GridLength.Auto 

对于明星大小的列:

new GridLength(1,GridUnitType.Star) 
3

有3种类型的宽度设置为网格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"/> 

希望它能帮助!