使用水平滚动

时间:2016-08-04 07:17:28

标签: c# user-interface uwp uwp-xaml

我对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>

结果如下:

Result with short text

看起来像是预期的,如果窗口调整大小,它会很好地消耗/缩小。 到目前为止一切都很好,但如果文字有点长,会发生什么?

发生这种情况:

Result with longer text

TextBox现在增长以适应其中的文本 a)因为有ScrollView允许水平滚动和 b)导致UI非常丑陋(因为右边距不可见,但滚动条等等)。

是否有人知道如何使用较长的文本(同时保留ScrollViewer)从第一个屏幕截图中获得外观?

我考虑过设置TextBox的最大宽度,但它阻止了TextBox随着窗口的增长而无法接受。

3 个答案:

答案 0 :(得分:1)

在调整窗口大小时更改MaxWidth的{​​{1}}属性可以解决您的问题。虽然,我认为这不是一个干净的方法。

TextBox

答案 1 :(得分:1)

如果您不限制Width的宽度,我认为您可能会将ActualWidth ScrollViewer ScrollableWidthTextBox混淆, ScrollableWidth将以TextBox的宽度成长。限制TextBox的宽度无法解决您的问题。

  

...右边距不可见,但滚动条是..

我猜你需要的是这样的:

enter image description here

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>