2014-01-31 28 views
1

我有這個網格分成三列,但我想支持兩個列寬度=「0.5 *」每個和一列寬度=「1 *」。這些列應該填充從web服務收到的數據。我如何根據我收到的數據來達到這個要求?Windows Phone調整ColumnDefinitions

<Grid> 
    <Grid.ColumnDefinitions> 
    <ColumnDefinition Width="0.3*" /> 
    <ColumnDefinition Width="0.3*" /> 
    <ColumnDefinition Width="0.3*" /> 
    </Grid.ColumnDefinitions> 
    <StackPanel Grid.Column="0"> 
    <TextBlock Text="{Binding OtherValue1Label}" /> 
    <TextBlock Text="{Binding OtherValue1Value}" /> 
    </StackPanel> 
    <StackPanel Grid.Column="1"> 
    <TextBlock Text="{Binding OtherValue2Label}" /> 
    <TextBlock Text="{Binding OtherValue2Value}" /> 
    </StackPanel> 
    <StackPanel Grid.Column="2"> 
    <TextBlock Text="{Binding OtherValue3Label}" /> 
    <TextBlock Text="{Binding OtherValue3Value}" /> 
    </StackPanel> 

+0

「基於我接收的數據量」是什麼意思?根據webservice的數據,列的寬度可能會有所不同? – lisp

回答

2

您可以第2和第3 ColumnDefinitions的Width屬性設置爲0時,只需要在第1列。例如:

//set column width to 0 
var columns = MyGrid.ColumnDefinitions; 
rows[1].Width = new GridLength(0); 
rows[2].Width = new GridLength(0); 

//set it back to 0.3* 
var columns = MyGrid.ColumnDefinitions; 
rows[1].Width = new GridLength(0.3, GridUnitType.Star); 
rows[2].Width = new GridLength(0.3, GridUnitType.Star); 

當您需要第一列和第二列時,可以應用相同的方法。只需將第三列的寬度設置爲0.