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>
答案 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正确地回答了你的问题的解决方案是将*或特定内容作为列的宽度。
您的示例中发生的情况是列的自动宽度显示“需要尽可能多的”因此它需要非常小的宽度,因为空文本框将需要非常小的宽度,这几乎不可见。
列的宽度为* *表示“获取可用空间”这将增加列的宽度,因此它将为文本框提供更多空间。
这意味着您已经达到了想要的效果,但由于列的宽度最小,因此几乎看不到它。