【问题标题】:WPF ScrollViewer not activating on Window ResizeWPF ScrollViewer 未在窗口调整大小时激活
【发布时间】:2014-10-18 02:12:21
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 需要Xaml,因为它是故事的关键.. :D

标签: wpf xaml


【解决方案1】:

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

【讨论】:

  • 嗨,Dean,我试过了。唯一的问题是,当用户将窗口切换到全屏模式时,网格会自行修复。我正在寻找的是一种灵活的东西,如果窗口空间允许并且如果没有空间,它可以显示所有内容,以显示允许用户查看不可见控件的滚动条。
【解决方案2】:

这可能对你有帮助

<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>

【讨论】:

  • 我试过这个,但你采取了一种稍微不同的方法,你添加了多个滚动条。如果控件不能适合其所有子元素,是否有任何方法可以初始化滚动视图。非常类似于 ListView 的东西。如果列表视图变得比它的孩子高,滚动条就会消失。如果没有出现!
【解决方案3】:

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

<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都不会显示水平滚动条。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-28
    • 1970-01-01
    相关资源
    最近更新 更多