2013-08-06 60 views
0

我有一個包含ScrollViewer的UserControl。Xaml ScrollViewer滾動條未顯示

<UserControl> 
    <ScrollViewer Name="ScrollContainerScroller" 
        VerticalScrollBarVisibility="Auto" 
        HorizontalScrollBarVisibility="Hidden"> 
     <ListBox Name="MyItemsListBox" ItemsSource="{Binding MyItems}"/> 
    </ScrollViewer> 
</UserControl> 

在堆棧面板中使用此用戶控件時,不會顯示ScrollViewer的滾動條。

<Border> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> <!-- top --> 
      <RowDefinition Height="*"/> <!-- content --> 
      <RowDefinition Height="Auto"/> <!-- bottom --> 
     </Grid.RowDefinitions> 

     <StackPanel Grid.Row="1" VerticalAlignment="Top"> 
      <Grid Name="ContentButtons" Height="20"> 
       <Button Name="MinimizeContent"/> 
       <Button Name="MaximizeContent"/> 
      </Grid> 
      <ContentControl Name="MyContent"/> 
     </StackPanel> 

     <!-- 
     <ContentControl Name="MyContent" Grid.Row="1" VerticalAlignment="Top"/> 
     --> 

     <Grid Name="MyBottomControls" Grid.Row="2" VerticalAlignment="Bottom"> 
       <Button Name="Delete" HorizontalAlignment="Left" Style="{StaticResource DeleteButtonStyle}"/> 
       <Button Name="Close" HorizontalAlignment="Center" Style="{StaticResource CloseButtonStyle}"/> 
       <Button Name="Hide" HorizontalAlignment="Right" Style="{StaticResource HideButtonStyle}"/> 
     </Grid> 

     <!-- shows up at last so the Grid can place it at the very top it in the Z axis --> 
     <ContentControl Name="MyTop" Grid.Row="0" VerticalAlignment="Top"/> 
    </Grid> 
</Border> 

當我刪除包裝的stackpanel scrollviewer顯示正確。

我需要做些什麼來使滾動條也可以與包裝MyContent-contentcontrol的附加堆棧面板一起工作?

+1

使用Grid或DockPanel代替StackPanel。但爲什麼你需要這個包裝? – LPL

+1

其實我忘記了這個stackpanel裏面有一些額外的控件應該放在contentcontrol上面。我編輯這個更清楚。 –

回答

3

StackPanel調整大小不會計算可能會調用滾動條出現的最大高度或寬度。你應該使用網格,並對齊項目。

<Border> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> <!-- top --> 
      <RowDefinition Height="*"/> <!-- content --> 
      <RowDefinition Height="Auto"/> <!-- bottom --> 
     </Grid.RowDefinitions> 

     <Grid Grid.Row="1" VerticalAlignment="Top"> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="*"/>  
      </Grid.RowDefinitions> 
      <Grid Name="ContentButtons" Height="20"> 
       <Button Name="MinimizeContent"/> 
       <Button Name="MaximizeContent"/> 
      </Grid> 
      <ContentControl Grid.Row="1" Name="MyContent"/> 
     </Grid > 

     <!-- 
     <ContentControl Name="MyContent" Grid.Row="1" VerticalAlignment="Top"/> 
     --> 

     <Grid Name="MyBottomControls" Grid.Row="2" VerticalAlignment="Bottom"> 
       <Button Name="Delete" HorizontalAlignment="Left" Style="{StaticResource DeleteButtonStyle}"/> 
       <Button Name="Close" HorizontalAlignment="Center" Style="{StaticResource CloseButtonStyle}"/> 
       <Button Name="Hide" HorizontalAlignment="Right" Style="{StaticResource HideButtonStyle}"/> 
     </Grid> 

     <!-- shows up at last so the Grid can place it at the very top it in the Z axis --> 
     <ContentControl Name="MyTop" Grid.Row="0" VerticalAlignment="Top"/> 
    </Grid> 
</Border>