2014-04-13 38 views
1

我目前正在编写我的第一个Windows Phone(8)应用程序,这也是我第一个Xaml应用程序。所以很可能我自己并没有找到解决我的问题的解决方案,因为我不知道用哪个词来提供谷歌。我试过了,但没发现有用。我发现一个,但它并不能帮助:禁用ScrollViewer VerticalScrollBarVisible如果内容适合

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中添加进一步的控件。)

如果滚动查看器无法进一步滚动,则会产生这些“过度反弹”效果。如果文字很大,那很好,但是当没有什么可滚动时,我不希望这种效果变得可见。

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

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

我希望Auto会做的伎俩,但它不(在VS2013模拟器WVGA测试)。

回答

0

你可以动态设置SetVerticalScrollBarVisibility到残疾人在你的CS代码取决于你的信息文本长度...

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

@Knowleech ....你可以把n的值,并使用此代码.cs –

0

您可以检查是否TextBlock高度比ScrollViewerheight更大。

在XAML:

 <ScrollViewer x:Name="TestScrollViewer"> 

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

     </ScrollViewer> 

在CS:

public MainPage() 
    { 
     InitializeComponent(); 

     Loaded += (sender, args) => 
     { 
      TestScrollViewer.IsEnabled = InfoText.ActualHeight > TestScrollViewer.ActualHeight; 

      // OR 

      TestScrollViewer.VerticalScrollBarVisibility = InfoText.ActualHeight > TestScrollViewer.ActualHeight 
       ? ScrollBarVisibility.Visible 
       : ScrollBarVisibility.Disabled; 
     }; 
    } 
+0

好的。这是解决方案背后的代码。是否有可能在xaml中完全像这样制定一些东西?我已经看过一些奇怪的xaml之前使用条件格式或什么的。 – Knowleech

1

尝试增加该属性您ScrollViewer

VerticalScrollMode="Auto" 

也可以尝试禁用HorizontalScrollModeHorizontalScrollBarVisiblity属性。

让我知道这是行不通的。然后,我将不得不制作一个示例应用程序,看看我是否可以为您做这项工作。现在我只是猜测。尝试一下。

+0

感谢您的想法。我会在本周晚些时候尝试,我会发布我的答案。 – Knowleech

+0

使用VerticalScrollMode在VS2013中报告以下错误:成员“VerticalScrollMode”无法识别或无法访问。“ – Brett

2

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