You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF C#中ScrollViewer滚动条仅能滚动到内容一半的问题求助

WPF ScrollViewer滚动不完整修复方案

问题根源

代码中两处配置错误导致内容被裁剪、滚动范围不足:

  1. 你给ScrollViewer内部的Grid硬编码了固定高度Height="1119",ScrollViewer的滚动范围是基于内部内容的总高度计算的,固定Grid高度后,即便Grid内部的表单内容超出1119高度,Grid也不会自动撑开,因此ScrollViewer只会按1119的高度计算滚动范围,后续超出的内容直接被裁剪。
  2. Grid的行定义使用了比例高度4516*,带*的比例高度是基于Grid自身的可用高度分配的,你已经固定了Grid高度为1119,即便表单内容总高度远大于1119,这一行的高度也只会被限制在1119,进一步导致内容被裁剪。

修复步骤

  • 删除Grid标签上的固定Height属性,让Grid可以根据内部表单内容自动撑开高度
  • 将Grid的行高改为Auto,让行高自动适配内部内容高度,不要使用比例高度
  • 可选优化:给ScrollViewer添加VerticalScrollBarVisibility="Auto"属性,确保内容超出可视区域时自动显示垂直滚动条

修正后的核心代码示例

<Window x:Class="PatientenEditor.MainWindow"
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
     xmlns:local="clr-namespace:PatientenEditor"
     mc:Ignorable="d"
     Title="MainWindow" Height="1119" Width="1000">
    <!-- 配置ScrollViewer自动显示滚动条 -->
    <ScrollViewer VerticalScrollBarVisibility="Auto">
        <!-- 删掉Grid的固定Height属性,让Grid自适应内容高度 -->
        <Grid Background="White">
            <Grid.RowDefinitions>
                <!-- 行高改为Auto适配内容,不需要用比例高度 -->
                <RowDefinition Height="Auto"/>
                <!-- 未使用的行保留即可,不需要调整 -->
                <RowDefinition Height="0*"/>
            </Grid.RowDefinitions>
            
            // 此处保留原有表单内容
    
        </Grid>
    </ScrollViewer>
</Window>

内容的提问来源于stack exchange,提问作者David Szőke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 04:18:04