WPF C#中ScrollViewer滚动条仅能滚动到内容一半的问题求助
WPF ScrollViewer滚动不完整修复方案
问题根源
代码中两处配置错误导致内容被裁剪、滚动范围不足:
- 你给
ScrollViewer内部的Grid硬编码了固定高度Height="1119",ScrollViewer的滚动范围是基于内部内容的总高度计算的,固定Grid高度后,即便Grid内部的表单内容超出1119高度,Grid也不会自动撑开,因此ScrollViewer只会按1119的高度计算滚动范围,后续超出的内容直接被裁剪。 - 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
相关产品推荐
相关产品推荐

