2

这可能已被问过,但无法找到确切的问题。

基本上我有一个用作表单的 WPF 窗口。现在对于表单,我有一个 StackPanel,它有助于将所有控件和标签保持在适当的位置。

如果用户的显示器分辨率较小,则窗口大小会变慢,例如 800x600。一些控件会丢失。

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

我认为没有必要将我的 xaml 放在这里,但如果您需要它,请告诉我。谢谢!

4

3 回答 3

3

AStackPanel具有无限大小(不尊重其父边界),因此您应该将其包装在 aGrid中,而后者又位于ScrollViewer.

于 2013-04-26T11:37:10.847 回答
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,则无论内容大小如何,scrollviewer 都不会显示水平滚动条。

于 2014-10-17T18:12:21.907 回答
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>
于 2013-04-26T11:47:43.607 回答