如何创建具有相对宽度值的动态ColumnDefinitions?

14

我找到了像这样用于动态创建网格和一些列的代码:

Grid grd = new Grid();
ColumnDefinition c = new ColumnDefinition(); 
c.Width = new GridLength(50, GridUnitType.Pixel); 
. . .
grd.ColumnDefinitions.Add(c);

但我想创建相对宽度的列,这些列与XAML中使用的“*”相对应:

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

我如何动态地使用这些相对宽度值/比率?


2
你有注意到 GridUnitType.Star 吗? - H H
1
从常见问题解答中得知:http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/ 请放心将此作为答案发布。 - Adam Mihalcin
1个回答

21

好的,我弄清楚了,在发布问题后:

. . .
ColumnDefinition c1 = new ColumnDefinition();
c1.Width = new GridLength(1, GridUnitType.Star);
ColumnDefinition c2 = new ColumnDefinition();
c2.Width = new GridLength(4, GridUnitType.Star);
ColumnDefinition c3 = new ColumnDefinition();
c3.Width = new GridLength(1, GridUnitType.Star);
ColumnDefinition c4 = new ColumnDefinition();
c4.Width = new GridLength(3, GridUnitType.Star);
ColumnDefinition c5 = new ColumnDefinition();
c5.Width = new GridLength(1, GridUnitType.Star);
. . .
grd.ColumnDefinitions.Add(c1);
. . .

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接