2011-03-09 42 views
12

我有一個網格:WPF:ScrollViewer中網格

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

第二行是與ScrollViewer中:

<ScrollViewer VerticalScrollBarVisibility="Auto" MinHeight="400" Grid.Row="1"> 
      <ItemsControl ItemsSource="{Binding SelectedUserControls}"/> 
    </ScrollViewer> 

我想如果需要的話, 第二行是與滾動但滾動永遠不可見,如果項目控件大於屏幕,則爲事件。

我怎樣才能在需要的時候出現在滾動?

+1

什麼是包裹你的網格? – ChrisF 2011-03-09 17:00:03

回答

4

編輯:

嘗試刪除'MinHeight = 400',我敢打賭它的作品!

你有你的400 ItemsControl的一個這樣了minHeight,直到你有足夠的項目佔所有400個,你不會看到你的滾動條。我在猜測持有網格的容器(或者網格上的顯式高度小於400),並且您有足夠的物體對於該容器來說太大,但是沒有足夠的物體來填充ItemsControl的MinHeight。

原來的答案:我剛跑了30個項目的測試應用中它(足以填補了minHeight),它似乎很好地工作:

<Window x:Class="TestApp11.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:l="clr-namespace:TestApp11" 
    Title="Window1" Loaded="Window_Loaded" Height="600" Width="800"> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="100"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 
     <ScrollViewer VerticalScrollBarVisibility="Auto" MinHeight="400" Grid.Row="1"> 
      <ItemsControl> 
       ... 
       <ListBoxItem Content="Item 30" /> 
       ... 
      </ItemsControl> 
     </ScrollViewer> 
    </Grid> 
</Window> 

請問您的集裝箱保持您的網格有一個明確的身高?