这看起来应该很简单,但我被难住了。在WPF中,我希望TextBox能够延伸到它的父元素的宽度,但只能达到最大宽度。问题是我希望它在它的父级中保持左对齐。要让它拉伸,你必须使用HorizontalAlignment=" stretch ",但结果是居中的。我已经用HorizontalContentAlignment做过实验,但它似乎什么也做不了。
如何使这个蓝色文本框与窗口大小一起增长,最大宽度为200像素,并保持左对齐?
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel>
<TextBox Background="Azure" Text="Hello" HorizontalAlignment="Stretch" MaxWidth="200" />
</StackPanel>
</Page>
诀窍是什么?
发布于 2008-11-11 09:25:52
您可以将HorizontalAlignment
设置为Left,设置MaxWidth
,然后将Width
绑定到父元素的ActualWidth
:
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel Name="Container">
<TextBox Background="Azure"
Width="{Binding ElementName=Container,Path=ActualWidth}"
Text="Hello" HorizontalAlignment="Left" MaxWidth="200" />
</StackPanel>
</Page>
发布于 2008-11-11 09:13:43
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MaxWidth="200"/>
</Grid.ColumnDefinitions>
<TextBox Background="Azure" Text="Hello" />
</Grid>
发布于 2008-11-11 11:26:28
给出的两个答案对我所说的问题都有效--谢谢!
然而,在我的实际应用程序中,我试图在ScrollViewer中约束一个面板,而Kent的方法由于某些原因没有很好地处理它,我没有费心去追踪。基本上,这些控件可能会扩展到超出MaxWidth设置的范围,从而违背了我的意图。
Nir的技术运行良好,ScrollViewer没有问题,但有一件小事需要注意。你需要确保TextBox的左边距和右边距都设置为0,否则它们会挡路。我还更改了绑定,使用ViewportWidth而不是ActualWidth,以避免出现垂直滚动条时出现的问题。
https://stackoverflow.com/questions/280331
复制相似问题