2012-02-15 61 views
10

我發現這樣的代碼用於動態創建一個網格和一些列:如何用相對寬度值創建動態ColumnDefinitions?

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

但我希望創建一個對應於「*」 S XAML中使用相對寬度列:

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

如何動態使用這些相對寬度值/比率?

+1

你也注意到GridUnitType.Star? – 2012-02-15 20:55:19

+1

隨意發佈這個答案。從FAQ:http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/ – 2012-02-15 21:06:07

回答

16

OK,我想通了,發帖的問題之後:

. . . 
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); 
. . . 
相關問題