一个TextBox我在我的App.xaml防止从水平扩大WPF
<Style x:Key="textBoxMultiline" TargetType="{x:Type TextBox}" >
<Setter Property="VerticalScrollBarVisibility" Value="Auto" />
<Setter Property="HorizontalScrollBarVisibility" Value="Hidden" />
<Setter Property="MinHeight" Value="50" />
<Setter Property="TextWrapping" Value="Wrap" />
</Style>
纵观我们正在使用它,需要一个简短的文字每个文本框的解决方案定义以下样式。
<TextBox x:Name="textBoxDescription" Grid.Row="2" Grid.Column="1" Style="{DynamicResource textBoxMultiline}" />
一切都很正常,但随后的客户抱怨一些领域进行上分辨率较低的旧式显示器corped,所以我放在一个ScrollViewer
在更高的视觉节点,以防止corping之一。
<ScrollViewer Height="Auto" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
...
</ScrollViewer>
奇怪的是,TextBox
ES与上述风格开始扩大到右边,而不是包装的文字。
有没有办法在不去除ScrollViewer
的情况下防止这种情况?
我使用的风格,不同宽度的文本框。我有点寻找更通用的解决方案,如覆盖文本框模板以包含固定宽度的东西,然后将textBox实际宽度绑定到新的元素宽度。这似乎有很多过度工程,但我一直在寻找只会改变TextBox风格的东西。 – dcarneiro
你在做什么有些矛盾。你将有宽度的文本框限制,然后你将它放在一个滚动查看器有一个无限的水平空间(“自动”)。你可以解决它,但没有一个通用的方法。你应该从scrollviewer的ActualWidth和文本框的(Max)Width创建一个绑定。问题是你必须添加一个转换器,以考虑补偿和其他东西(非常讨厌我)。 –
水平滚动条是黑客,因为其他控件在低分辨率屏幕上被裁剪。我试图将文本框宽度绑定到相同宽度的元素(另一个具有相同样式但隐藏的网格单元格上的文本框)并且它工作正常。但之后我发现信息所在的TextBlock也会水平扩展而不是包装文本。这告诉我水平滚动条优先于TextWrapping属性。所以我想我必须重新设计UI才能支持低屏幕分辨率。 – dcarneiro