Windows Phone调整ColumnDefinitions

时间:2014-01-31 11:24:16

标签: c# xaml windows-phone-8 grid

我将此网格划分为三列,但我想支持两列,每列宽度为“0.5 *”,另一列宽度为“1 *”。列应填充从Web服务接收的数据。如何根据收到的数据量来实现该要求?

<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>

1 个答案:

答案 0 :(得分:2)

当只需要第1列时,您可以将第2和第3 ColumnDefinitions的Width属性设置为0。例如:

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

当您需要第1列和第2列时,可以应用相同的方法。只需将第3列的宽​​度设置为0.