如果内容适合,则禁用ScrollViewer VerticalScrollBarVisible

时间:2014-04-13 14:23:26

标签: wpf xaml windows-phone-8

我目前正在编写我的第一个Windows Phone(8)应用程序,这也是我的第一个Xaml应用程序。所以很可能我自己找不到解决问题的方法,因为我不知道要给google提供哪些单词。我试过了,但没发现任何有用的东西我发现了一个,但它没有帮助:

How to disable "scroll compression" in ScrollViewer

这是我的XAML的重要部分:

<ScrollViewer VerticalScrollBarVisibility="Auto">
    <StackPanel VerticalAlignment="Top">
         <TextBlock x:Name="InfoText" TextWrapping="Wrap" VerticalAlignment="Top" Text="VersionInfoText"/>
    </StackPanel>
</ScrollViewer>

我将以编程方式更改TextBlock InfoText的内容。文本可能足够短,完全适合,或者可能相当长。这就是我将它嵌入ScrollViewer的原因。 (顺便说一句,稍后会有更多的控件添加到StackPanel。)

ScrollViewer会产生这些&#34; overbounce&#34;效果,如果它不能进一步滚动。如果文字很大,这很好,但是当没有什么可以滚动的时候,我不希望这种效果是可见的。

我尝试VerticelScrollBarVisibility="Disable",成功禁用了效果。现在我的问题是:

我可以自动(通过XAML-Magic)在AutoDisable之间切换,具体取决于我的StackPanel的高度和ScrollViewer的高度吗?

我希望Auto可以做到这一点,但事实并非如此(在VS2013仿真器WVGA中测试过)。

4 个答案:

答案 0 :(得分:9)

在VS2013设置VerticalScrollBarVisibility="Auto"为我工作。

答案 1 :(得分:2)

尝试将此属性添加到ScrollViewer

VerticalScrollMode="Auto"

同时尝试停用HorizontalScrollModeHorizontalScrollBarVisiblity属性。

如果这不起作用,请告诉我。然后我将制作一个示例应用程序,看看我能否为您完成这项工作。现在我只是在猜测。试试吧。

答案 2 :(得分:0)

您可以将SetVerticalScrollBarVisibility动态设置为Disabled,具体取决于您的cs代码中的InfoText长度...

if(InfoText.Length() >n)
{
    ScrollViewer.SetVerticalScrollBarVisibility(scrollViewer, ScrollBarVisibility.Auto);
}
else
{
   ScrollViewer.SetVerticalScrollBarVisibility(scrollViewer, ScrollBarVisibility.Disabled);
}

答案 3 :(得分:0)

您可以检查TextBlock身高是否大于height的{​​{1}}。

在xaml中:

ScrollViewer

在cs中:

        <ScrollViewer x:Name="TestScrollViewer">

            <TextBlock x:Name="InfoText"
                       Text="Information"
                       TextWrapping="Wrap"
                       VerticalAlignment="Top" />

        </ScrollViewer>