我需要从后面的代码动态创建一个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
答案 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.aspx 和 http://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"/>
希望它有所帮助!