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



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>

给TextBox一些宽度,或者将ColumnDefinition的宽度设置为*而不是Auto。它一直延伸到最后一列,但只是你看不到它,因为宽度是自动的。

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

  <Grid>
  <Grid.ColumnDefinitions>
       <ColumnDefinition Width="*" />
       <ColumnDefinition Width="*" />
       <ColumnDefinition Width="*" />
       <ColumnDefinition Width="*" />
  </Grid.ColumnDefinitions>
  <TextBox Grid.Column="1" Grid.ColumnSpan="3" />
  </Grid>

正如Dipesh Bhatt在回答中正确地指出的那样,问题的解决方案是为列放置*或特定的宽度。

在您的示例中,列的自动宽度表示"需要多少就取多少",因此它只需要很小的宽度,因为空文本框需要非常非常小的宽度(这几乎不可见)。

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

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

相关内容

  • 没有找到相关文章

最新更新