WPF中DockPanel内TextBox的VerticalContentAlignment失效问题求助
关于DockPanel内TextBox的VerticalContentAlignment不生效的问题
兄弟,这个坑我之前踩过!其实核心原因是TextBox的VerticalContentAlignment属性生效的前提是,它有足够的垂直空间可以让文本调整位置——默认情况下TextBox的高度刚好贴合文本的行高,所以你改这个属性根本看不出变化!
给你几个具体的解决步骤:
- 先给TextBox设置足够的高度,比如手动指定
Height="80",或者让DockPanel给它分配足够的垂直空间(比如把它设为DockPanel的最后一个子元素,同时开启LastChildFill="True",让它占满剩余垂直空间)。举个例子:
<DockPanel LastChildFill="True"> <TextBox DockPanel.Dock="Top" VerticalContentAlignment="Center" Height="60" Text="居中对齐的文本"/> <TextBox DockPanel.Dock="Top" VerticalContentAlignment="Bottom" Height="60" Text="底部对齐的文本"/> <TextBox VerticalContentAlignment="Stretch" Text="占满剩余空间的文本"/> </DockPanel>
- 如果是多行TextBox(开启了
AcceptsReturn="True"),这个属性的效果会更明显,因为此时文本容器有更多垂直空间可以调整对齐方式:
<TextBox VerticalContentAlignment="Bottom" Height="120" AcceptsReturn="True" Text="第一行文本
第二行文本"/>
- 最后排查下有没有全局样式或自定义模板覆盖了这个属性——有些项目里的全局TextBox样式会强制设置VerticalContentAlignment,你可以临时给TextBox加上
Style="{x:Null}"来禁用样式,看看是不是这个原因导致的。
内容的提问来源于stack exchange,提问作者Andronomos
相关产品推荐
相关产品推荐

