WPF ScrollViewer未在Window Resize上激活

时间:2013-04-26 10:02:47

标签: wpf xaml

可能有人问过,但无法找到确切的问题。

基本上我有一个WPF窗口用作表单。现在,对于表单,我有一个StackPanel,可以帮助保持所有控件和标签。

如果用户的分辨率较低,则窗口大小会较慢,例如800x600。有些控件丢失了。

为此,我添加了一个围绕StackPanel的ScrollViewer。但ScrollViewer永远不会激活。它可能与stackpanel有关,我猜想它永远不会受到限制。但是,如果用户调整窗口大小,或者窗口(打开时)无法正确显示所有内容,如何激活滚动查看器?

我不认为必须把我的xaml放在这里,但如果你需要它让我知道。谢谢!

3 个答案:

答案 0 :(得分:1)

StackPanel具有无限大小(不尊重其父界限),因此您应将其包裹在Grid中,而ScrollViewer又位于{{1}}内。

答案 1 :(得分:0)

这可能对您有所帮助

<StackPanel Orientation="Vertical">
  <ScrollViewer Name="scrollViewer1">
   <DataGrid Name="dgDataList" ItemsSource="{Binding}">
    <DataGrid.Columns>
       <DataGridTemplateColumn Header="View" IsReadOnly="True">
           <DataGridTemplateColumn.CellTemplate>
               <DataTemplate>
                  //control like textblock, image etc
                </DataTemplate>
           </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>                                    
    </DataGrid.Columns>
 </DataGrid>
</ScrollViewer>
<ScrollViewer Name="scrollViewer2" >
 <DataGrid Name="dgDataList2" ItemsSource="{Binding}" >
  <DataGrid.Columns>
       <DataGridTemplateColumn Header="View" IsReadOnly="True">
           <DataGridTemplateColumn.CellTemplate>
               <DataTemplate>
                  //control like textblock, image etc
                </DataTemplate>
           </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>                                    
    </DataGrid.Columns>
 </DataGrid>
</ScrollViewer>
</StackPanel>

答案 2 :(得分:0)

我遇到了类似的问题,即使屏幕上有隐藏的内容,也没有显示水平滚动条。

<Window x:Class="WPFTestingPlatform.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="{Binding SystemParameters.PrimaryScreenHeight}" 
        Width="{Binding SystemParameters.PrimaryScreenWidth}"
        ResizeMode="CanResizeWithGrip">
    <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
        <StackPanel Width="1248" Height="600">
                <TextBlock HorizontalAlignment="Right">Right</TextBlock>
        </StackPanel>
    </ScrollViewer>
</Window>

将窗口设置为您想要的窗口大小。同时设置Stackpanel大小,使其整齐地适合您的所有内容。

窗口大小不如设置StackPanel高度/宽度那么重要,否则StackPanel将从窗口继承它的大小。

您可以调整此窗口的大小,滚动条将显示/消失(如果设置了ResizeMode="CanResizeWithGrip")。如果您未设置HorizontalScrollBarVisibility,则无论内容大小如何,滚动查看器都不会显示水平滚动条。