2011-08-23 5 views
1

저는 StackPanel을 가지고 있는데, 프레임의 내부 높이가 명확하게 초과하는 경우에도 스크롤 가능하도록 ScrollViewer의 내용을 스크롤 할 수 없습니다. ScrollViewer의 경계입니다. 이전에 Window의 루트 컨테이너로 Grid가 있었지만 StackPanel로 변경하면 스크롤바가 더 이상 나타나지 않습니다.WPF ScrollViewer를 사용할 수 없습니다.

작동하는 유일한 방법은 명시 적으로 ScrollViewer의 높이를 설정 한 다음 크기를 조정할 때 thw Window의 크기를 지정하지 않는 것입니다.

그리드를 사용해야합니까?

죄송합니다. 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의 고정 높이를 설정하거나 StackPanel 대신 격자를 사용할 수 있습니다. 눈금을 사용하는 경우 ScrollViewer가 배치 될 행의 고정 높이를 설정해야합니다.

희망이 있습니다.

+0

감사합니다. @ Alfonso. 그건 의미가 있습니다. 나는 StackPanel로 Grid를 대체하는 것이 논리적 인 의미를 가졌다 고 생각했다. 그 이유는 요소들이 수직으로 배열 되었기 때문이다. – transistor1

+1

@ transistor1 - 오신 것을 환영합니다! 이것이 스택 패널의 문제점입니다. 레이아웃은 설정이 쉽지만 그리드는 레이아웃을보다 잘 제어 할 수 있습니다. – alf

관련 문제