2011-08-23 101 views
1

我有一個StackPanel,出於某種原因,我無法將ScrollViewer的內容滾動到底部,儘管事實上Frame的內部高度明顯超過了ScrollViewer的邊界。我以前有一個網格作爲窗口的根容器,但是當我將其更改爲StackPanel時,不再顯示滾動條。無法讓WPF ScrollViewer工作

似乎工作的唯一的事情是,如果我明確設置ScrollViewer的高度,但它不調整大小與thw窗口時的大小。

我必須使用網格嗎?

對不起,如果這是顯而易見的;我對WPF比較陌生。

在此先感謝您的幫助!

<Window x:Class="MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     d:DesignWidth="566" Width="719" > 

    <StackPanel VerticalAlignment="Stretch" > 
     <Menu HorizontalAlignment="Stretch" Name="Menu1" VerticalAlignment="Stretch" Width="Auto"> 
      <MenuItem Header="_File" Name="MenuItem1"> 
       <MenuItem Header="_Print" Name="MenuItem2" /> 
      </MenuItem> 
     </Menu> 

     <Canvas x:Name="SearchCanvas" Width="681" Height="55"> 
      <ComboBox Canvas.Left="6" Canvas.Top="0" Height="22" x:Name="cbLookupField" Width="302" Text="" SelectedIndex="0"> 
       <ComboBoxItem Content="Reference Name" /> 
       <ComboBoxItem Content="Matter" /> 
       <ComboBoxItem Content="Client Loan Number" /> 
      </ComboBox> 
      <TextBox KeyDown="tbLookup_KeyDown" Canvas.Left="6" Canvas.Top="28" Height="23" x:Name="tbLookup" Width="302" /> 

      <Button Canvas.Left="314" Canvas.Top="27" Content="Search" Height="24" Name="btnSearch" Width="106" /> 

      <ListView MouseDoubleClick="lvSearchResults_MouseDoubleClick" 
         ItemsSource="{Binding Tables[0]}" 
         Canvas.Left="-8" Canvas.Top="57" Height="129" Name="lvSearchResults" Width="697" Visibility="Hidden"> 
       <ListView.View> 
        <GridView x:Name="gvResultsGridView"/> 
       </ListView.View> 
      </ListView> 
     </Canvas> 

     <ScrollViewer x:Name="ScrollViewer1" VerticalScrollBarVisibility="Visible"> 
      <Frame Height="Auto" Source="Full Report.xaml" VerticalAlignment="Stretch" x:Name="Frame1" /> 
     </ScrollViewer> 
    </StackPanel> 
</Window> 

回答

3

的ScrollViewer中在底部沒有固定的高度,因此,因爲它包含在一個StackPanel,其高度將是內容,在這種情況下是框高的高度。

您可以爲ScrollViewer設置固定高度,也可以使用Grid而不是StackPanel。如果你使用網格,你應該爲ScrollViewer所在的行設置一個固定的高度。

希望它有幫助!

+0

謝謝@Alfonso。這就說得通了;我認爲用StackPanel替換Grid是合乎邏輯的,因爲元素是垂直排列的(堆疊在另一個之上),但顯然不是。 – transistor1

+1

@ transistor1 - 不客氣!這是stackpanels的問題。他們更容易設置,但網格允許更多的佈局控制。 – alf