我目前正在编写我的第一个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)在Auto
和Disable
之间切换,具体取决于我的StackPanel的高度和ScrollViewer的高度吗?
我希望Auto
可以做到这一点,但事实并非如此(在VS2013仿真器WVGA中测试过)。
答案 0 :(得分:9)
在VS2013设置VerticalScrollBarVisibility="Auto"
为我工作。
答案 1 :(得分:2)
尝试将此属性添加到ScrollViewer
VerticalScrollMode="Auto"
同时尝试停用HorizontalScrollMode
和HorizontalScrollBarVisiblity
属性。
如果这不起作用,请告诉我。然后我将制作一个示例应用程序,看看我能否为您完成这项工作。现在我只是在猜测。试试吧。
答案 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>