首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >同时使用HorizontalAlignment=Stretch、MaxWidth和左对齐?

同时使用HorizontalAlignment=Stretch、MaxWidth和左对齐?
EN

Stack Overflow用户
提问于 2008-11-11 08:26:34
回答 8查看 103.1K关注 0票数 102

这看起来应该很简单,但我被难住了。在WPF中,我希望TextBox能够延伸到它的父元素的宽度,但只能达到最大宽度。问题是我希望它在它的父级中保持左对齐。要让它拉伸,你必须使用HorizontalAlignment=" stretch ",但结果是居中的。我已经用HorizontalContentAlignment做过实验,但它似乎什么也做不了。

如何使这个蓝色文本框与窗口大小一起增长,最大宽度为200像素,并保持左对齐?

代码语言:javascript
复制
<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>

诀窍是什么?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2008-11-11 09:25:52

您可以将HorizontalAlignment设置为Left,设置MaxWidth,然后将Width绑定到父元素的ActualWidth

代码语言:javascript
复制
<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>
票数 93
EN

Stack Overflow用户

发布于 2008-11-11 09:13:43

代码语言:javascript
复制
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" MaxWidth="200"/>
    </Grid.ColumnDefinitions>

    <TextBox Background="Azure" Text="Hello" />
</Grid>
票数 53
EN

Stack Overflow用户

发布于 2008-11-11 11:26:28

给出的两个答案对我所说的问题都有效--谢谢!

然而,在我的实际应用程序中,我试图在ScrollViewer中约束一个面板,而Kent的方法由于某些原因没有很好地处理它,我没有费心去追踪。基本上,这些控件可能会扩展到超出MaxWidth设置的范围,从而违背了我的意图。

Nir的技术运行良好,ScrollViewer没有问题,但有一件小事需要注意。你需要确保TextBox的左边距和右边距都设置为0,否则它们会挡路。我还更改了绑定,使用ViewportWidth而不是ActualWidth,以避免出现垂直滚动条时出现的问题。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/280331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档