如何使文本框宽度与网格中的一组列相匹配?

时间:2012-02-28 13:12:15

标签: wpf textbox grid width column-width

Supose我有一个包含4列的网格,并希望在第二列中放置一个文本框并将其跨越到最后一列。我怎样才能使文本框宽度与最后3列一样宽?

我尝试过Borders,但它不起作用。

<Grid>
      <Grid.ColumnDefinitions>
           <ColumnDefinition Width="Auto" />
           <ColumnDefinition Width="Auto" />
           <ColumnDefinition Width="Auto" />
           <ColumnDefinition Width="Auto" />
      </Grid.ColumnDefinitions>

      <TextBox Grid.Column="1" Grid.ColumnSpan="3" />
</Grid>

3 个答案:

答案 0 :(得分:7)

给TextBox一些宽度或使ColumnDefinition的宽度为*而不是Auto。它一直跨到最后一列,但由于宽度为自动,您无法看到它。

答案 1 :(得分:3)

现在,最后3列适合文本框,宽度为自动。

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

  <TextBox Grid.Column="1" Grid.ColumnSpan="3" />
  </Grid>

答案 2 :(得分:2)

正如Dipesh Bhatt正确地回答了你的问题的解决方案是将*或特定内容作为列的宽度。

您的示例中发生的情况是列的自动宽度显示“需要尽可能多的”因此它需要非常小的宽度,因为空文本框将需要非常小的宽度,这几乎不可见。

列的宽度为* *表示“获取可用空间”这将增加列的宽度,因此它将为文本框提供更多空间。

这意味着您已经达到了想要的效果,但由于列的宽度最小,因此几乎看不到它。