我希望允许文本框的大小增加,直到它填满其容器。如果在WPF窗口上放置一个空白文本框,它将增加大小(当用户在其中键入文本时),直到它填满容器,此时它将停止扩展。
但是,如果我将该文本框放在网格中,文本框永远不会停止增长。甚至更奇怪的是,如果我在网格列上硬编码一些固定宽度,文本框甚至会继续增长。
我希望文本框增长,网格增长,但一旦网格不再增长,我希望文本框也不再增长。可以这样做吗?
这是一个快速的样本。当您在文本框中键入内容时,它的大小会增加(按预期)。但是,即使网格完全填满WPF表单,文本框也会继续增长。
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" Name="window">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="StackOverflow"/>
<TextBox Grid.Column="1"/>
</Grid>
</Window>
答案 0 :(得分:3)
将第二列定义的宽度设置为“*”应该为您提供所需的功能。
此外,在文本框中设置MinWidth
,在HorizontalAlignment
设置为Left
,这样它就不会延伸到列宽。如果要拉伸,则删除此属性。
在此示例中,我添加了一个宽度为50的附加列,以突出显示文本框一旦满足列宽边界就会停止增长。
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="50" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
Text="StackOverflow" />
<TextBox Grid.Column="1"
HorizontalAlignment="Left"
MinWidth="50" />
</Grid>