2014-04-13 25 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"爲我工作。