2011-08-23 38 views
2

我有下面這段XAML代碼:的ScrollViewer網格

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="*" /> 
    </Grid.RowDefinitions> 

    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="Auto" /> 
    </Grid.ColumnDefinitions> 

    <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Visible" Grid.Column="0" Grid.Row="1"> 
     <ContentControl prism:RegionManager.RegionName="{x:Static local:RegionNames.MainMenuRegion}" /> 
    </ScrollViewer> 
</Grid> 

如果我設置VerticalScrollBarVisibility爲Visible一切工作正常。如果我將其設置爲Auto,則ScrollBar永遠不會顯示(即使在需要時)。

有什麼建議嗎?

回答

3

您的包含面板不受限制 - 特別是,您已將Grid.Row=1的高度設置爲*,表示「使用所有可用空間」。所以你的面板只是增長而不是顯示ScrollViewer。

嘗試將其設置爲受約束的高度,並且當主菜單中的MenuItems數量過多時,應該顯示ScrollViewer。

+1

反過來說,'*'會限制它,'Auto'會讓它擁有它想要的任何空間。所以問題是列而不是行:) –

+0

如果面板比內容大,內容允許增長,直到它填滿面板 - 這就是我的意思。它限制它,但只限於最大尺寸。它說「使用所有可用空間」而不是「如果需要增長」,但仍然可能導致它。我不認爲列定義可能真的影響* vertical *滾動條。 – Lunivore

+0

只需嘗試一下示例代碼。假設內容的寬度爲2000,列的寬度設置爲「自動」,那麼您將永遠無法看到「ScrollViewer」,因爲它會是屏幕的方式。然後再次,問題可能是,它是小的..我可能已經誤解了問題 –