wpf - 使 ScrollViewer 填充动态区域

标签 wpf xaml scrollviewer

在下面的示例中,我无法让 ScrollViewer 填充可用空间,由于上面的动态内容,高度未知,但有没有办法填充可用空间而不是过度运行?

   <Grid x:Name="Main" Height="200" MaxHeight="200">
      <StackPanel>
         <Grid x:Name="MainContent" Height="170" MaxHeight="170">
            <StackPanel>
               <TextBlock FontSize="24" Text="Dynamic data "/>
               <TextBlock FontSize="24" Text="height "/>
               <TextBlock FontSize="24" Text="unknown... "/>
               <Grid x:Name="Results" Background="Red">
                  <ScrollViewer>
                     <StackPanel>
                        <TextBlock FontSize="24" Text="Result set... 0"/>
                        <TextBlock FontSize="24" Text="Result set... 1"/>
                        <TextBlock FontSize="24" Text="Result set... 2"/>
                        <TextBlock FontSize="24" Text="Result set... 3"/>
                     </StackPanel>
                  </ScrollViewer>
               </Grid>
            </StackPanel>
         </Grid>
         <Grid x:Name="Nav">
            <Button HorizontalAlignment="Left" Content="Back"/>
            <Button HorizontalAlignment="Right" Content="Forward"/>
         </Grid>
      </StackPanel>
   </Grid>

最佳答案

MainContent Grid使用 DockPanel而不是 StackPanelLastChildFill=True ,像这样:

<Grid x:Name="MainContent" Height="170" MaxHeight="170">
    <DockPanel LastChildFill="True">
        <TextBlock DockPanel.Dock="Top" FontSize="24" Text="Dynamic data "/>
        <TextBlock DockPanel.Dock="Top" FontSize="24" Text="height "/>
        <TextBlock DockPanel.Dock="Top" FontSize="24" Text="unknown... "/>
        <Grid x:Name="Results" Background="Red">
            <ScrollViewer>
                <StackPanel>
                    <TextBlock FontSize="24" Text="Result set... 0"/>
                    <TextBlock FontSize="24" Text="Result set... 1"/>
                    <TextBlock FontSize="24" Text="Result set... 2"/>
                    <TextBlock FontSize="24" Text="Result set... 3"/>
                </StackPanel>
            </ScrollViewer>
        </Grid>               
    </DockPanel>
</Grid>

然后 DockPanel 的最后一个元素将根据可用空间自行调整

关于wpf - 使 ScrollViewer 填充动态区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16920160/

相关文章:

wpf - ScrollViewer 中的用户控件不会在 WPF 中滚动

wpf - 您可以通过 WPF 样式将数据绑定(bind)到 CornerRadius 吗?

c# - WPF - 强制 ShowDialog 返回

C# 客户端 : how to get current datetime from SQL Server?

c# - 如何将关闭按钮添加到 MahApps TabControl 的选项卡?

WPF Scrollviewer 滚动到鼠标位置

c# - 未绘制 iText 7 表格的底部边框

c# - 如何进行 XAML 布局 - 堆栈面板中的居中项目

xaml - 在Xamarin表单中使用Rg插件弹出窗口

c# - ListView 中的 "Infinite Scrolling"/避免重入滚动事件