5

假设我有一个有 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>
4

3 回答 3

7

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

于 2012-02-28T13:26:00.413 回答
3

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

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

  <TextBox Grid.Column="1" Grid.ColumnSpan="3" />
  </Grid>
于 2012-02-28T14:09:39.480 回答
3

正如Dipesh Bhatt在他的回答中正确提出的那样,解决您的问题的方法是将 * 或特定的东西作为列的宽度。

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

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

这意味着您已经实现了您想要的,但由于列的宽度最小,它几乎不可见。

于 2012-02-28T14:13:23.797 回答