2014-03-14 38 views
0

我的WPF应用程序中有一个UserControl,它需要有3个垂直定向的Expander控件。向具有多个扩展器控件的用户控件添加滚动

 <Grid Margin="0,-3,0,0" Height="430" Width="Auto"> 
     <Grid.RowDefinitions/> 
     <ScrollViewer> 
      <StackPanel Height="430" ScrollViewer.VerticalScrollBarVisibility="Auto"> 
       <Expander Grid.Row="0" Margin="0,5,0,0" MinHeight="0" MaxHeight="220" Height="Auto" Header="Auto Create Well Pad" OpacityMask="#FFECF5F5"> 
        <Grid Margin="5,5"> 
         ... 
        </Grid> 
       </Expander> 
       <Expander Grid.Row="1" Margin="0,5,0,0" Height="Auto" Header="Scenario well pads" OpacityMask="#FFECF5F5"> 
        <WrapPanel Margin="0,5,0,0" OpacityMask="#FFECF5F5" VerticalAlignment="Top"> 
         ... 
        </WrapPanel> 
       </Expander> 
       <Expander Grid.Row="2" Margin="0,5,0,5" Height="Auto" Header="Project Well Pads" IsExpanded="{Binding ShowAvailablePads}" OpacityMask="#FFECF5F5"> 

       </Expander> 
      </StackPanel> 
     </ScrollViewer> 
    </Grid> 

利用上述XAML代码,滚动条确实出现但在展开/折叠膨胀机控制,滚动条不会变得活跃。

注:所有扩展里面有他们不同的控制,当他们扩大,滚动条应该成为活跃

回答

0

在这种情况下,你需要设置HeightScrollViewer

<ScrollViewer Height="100" 
       VerticalAlignment="Top" 
       ScrollViewer.VerticalScrollBarVisibility="Auto" 
... />  

因为从MSDN

一个ScrollViewer使内容显示在比较小的区域的实际尺寸。当ScrollViewer的内容不完全可见时,ScrollViewer将显示用户可用来移动可见内容区域的滚动条。

2

我看起来像你应该设置在ScrollViewer而不是StackPanel高度。

如果设置在StackPanel一个固定的高度永远不会变大,因此扩大了Expanders时,如果该内容无法再适应的StackPanel里面,它只是片段的剩余内容,并没有表现出来。

因此,问题是使StackPanel通过不设置高度自由成长明确, 再有当没有更多的空间的ScrollViewer接管。

<ScrollViewer Height="430"> 
    <StackPanel> 
     .... 
    </StackPanel> 
</ScrollViewer>