我对TextBox
控件有疑问。
请注意ScrollViewer
,因为这会产生不同。
这是我的xaml:
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<ScrollViewer HorizontalScrollMode="Auto" HorizontalScrollBarVisibility="Auto">
<TextBox HorizontalAlignment="Stretch"
VerticalAlignment="Center"
Margin="20"
Text = "A short text">
</TextBox>
</ScrollViewer>
</Grid>
结果如下:
看起来像是预期的,如果窗口调整大小,它会很好地消耗/缩小。 到目前为止一切都很好,但如果文字有点长,会发生什么?
发生这种情况:
TextBox
现在增长以适应其中的文本
a)因为有ScrollView
允许水平滚动和
b)导致UI非常丑陋(因为右边距不可见,但滚动条等等)。
是否有人知道如何使用较长的文本(同时保留ScrollViewer)从第一个屏幕截图中获得外观?
我考虑过设置TextBox
的最大宽度,但它阻止了TextBox
随着窗口的增长而无法接受。
答案 0 :(得分:1)
在调整窗口大小时更改MaxWidth
的{{1}}属性可以解决您的问题。虽然,我认为这不是一个干净的方法。
TextBox
答案 1 :(得分:1)
如果您不限制Width
的宽度,我认为您可能会将ActualWidth
ScrollViewer
ScrollableWidth
与TextBox
混淆, ScrollableWidth
将以TextBox
的宽度成长。限制TextBox
的宽度无法解决您的问题。
...右边距不可见,但滚动条是..
我猜你需要的是这样的:
xaml代码:
<ScrollViewer Margin="20" BorderBrush="Blue" BorderThickness="2"
HorizontalScrollMode="Auto" HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Hidden" VerticalScrollMode="Disabled" Height="45">
<TextBox x:Name="tb" HorizontalAlignment="Stretch" VerticalAlignment="Center"
BorderThickness="0"/>
</ScrollViewer>
您可以自定义ScrollViewer
,使其行为像TextBox
,例如获得焦点时,Border
将会显示或其他内容。
答案 2 :(得分:0)
尝试在滚动查看器上设置Padding属性而不是Margin,试试这个
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">">
<ScrollViewer HorizontalScrollBarVisibility="Auto" Padding="20,0">
<TextBox HorizontalAlignment="Stretch"
VerticalAlignment="Center"
Margin="20"
Text = "A short text">
</TextBox>
</ScrollViewer>
</Grid>