我需要从代码隐藏动态创建一个 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 ?
你可以这样指定:
对于自动调整大小的列:
GridLength.Auto
对于星型尺寸的列:
new GridLength(1,GridUnitType.Star)
设置 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"/>
希望有帮助!
我认为这会有所帮助:
对于自动列:
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
格力兹 肖恩堡