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在回答中正确地指出的那样,问题的解决方案是为列放置*或特定的宽度。
在您的示例中,列的自动宽度表示"需要多少就取多少",因此它只需要很小的宽度,因为空文本框需要非常非常小的宽度(这几乎不可见)。
列宽度中的*表示"获取任何可用空间",这将增加列的宽度,因此将为文本框提供更多空间。
这意味着您已经实现了您想要的,但由于列的宽度很小,它几乎不可见。