2012-02-15 10 views
10

Tôi đã tìm thấy mã như thế này cho động tạo ra một lưới và một số cột:Cách tạo ColumnDefinition động với các giá trị độ rộng tương đối?

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

Nhưng tôi muốn tạo cột với độ rộng tương đối, tương ứng với các "*" s sử dụng trong XAML:

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

Làm cách nào để sử dụng các giá trị/tỷ lệ chiều rộng tương đối động này?

+1

Bạn có cảm nhận được GridUnitType.Star? –

+1

Hãy thoải mái đăng câu trả lời này. Từ Câu hỏi thường gặp: http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/ –

Trả lời

16

OK, I figured it out, ngay sau khi đăng câu hỏi:

. . . 
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); 
. . .