指定网格列的宽度

时间:2017-11-10 11:01:18

标签: wpf grid

我正在使用网格来定义具有此列模板的表单:

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

但我需要一个特定的行来使用另一个列模板:

<Label Grid.Column="0" Grid.Row="4">N°</Label>
<TextBox Grid.Column="1" Grid.Row="4" Name="idNum"></TextBox>
<ComboBox Grid.Column="2" Grid.Row="4" Name="idVoie" SelectedValuePath="Key" DisplayMemberPath="Value" SelectedValue="."></ComboBox>
<TextBox Grid.Column="3" Grid.Row="4" Name="idAdr"></TextBox>

前三个字段为1*,最后一个字段为空闲空间。 当然,我不能直接在字段中用百分比指定宽度。

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

您可以为该特定行使用嵌套网格,该网格跨越外部网格的所有四列:

<Grid Grid.Column="0" Grid.Row="4" Grid.ColumnSpan="4">
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="*" />
    <ColumnDefinition Width="*" />
    <ColumnDefinition Width="*" />
    <ColumnDefinition Width="5*" />
  </Grid.ColumnDefinitions>

  <Label Grid.Column="0" Grid.Row="0">N°</Label>
  <TextBox Grid.Column="1" Grid.Row="0" Name="idNum"></TextBox>
  <ComboBox Grid.Column="2" Grid.Row="0" Name="idVoie" SelectedValuePath="Key" DisplayMemberPath="Value" SelectedValue="."></ComboBox>
  <TextBox Grid.Column="3" Grid.Row="0" Name="idAdr"></TextBox>
</Grid>

注意我假设当您引用1*时,您的意思是相对于您已经拥有的网格,即与第一列和第三列相同的大小。因此,整行中总共有8*,我计算了行的相对宽度为1*1*1*,{{ 1}}。