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

现有.NET MAUI应用中添加的Blazor页面无法滚动,求解决方案

解决.NET MAUI中BlazorWebView无法滚动的问题

你的问题出在布局层面的滚动支持缺失:MAUI页面容器未提供滚动能力,同时Blazor内部布局也未处理超出内容的滚动逻辑。可以通过以下两种方案解决:

方案一:在MAUI页面中用ScrollView包裹BlazorWebView

将原来的VerticalStackLayout替换为ScrollView,同时设置BlazorWebView的VerticalOptions为FillAndExpand,让它填充可用空间,ScrollView会自动处理超出屏幕的内容滚动:

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:page="clr-namespace:MyApp.Pages.Testing"
             x:Class="MyApp.MainPage">
    <ScrollView>
        <BlazorWebView HostPage="wwwroot/index.html" VerticalOptions="FillAndExpand">
            <BlazorWebView.RootComponents>
                <RootComponent
                    Selector="#app"
                    ComponentType="{x:Type page:MyTestComponent}"/>
            </BlazorWebView.RootComponents>
        </BlazorWebView>
    </ScrollView>
</ContentPage>

方案二:在Blazor组件内部添加滚动容器

如果希望在Blazor层面控制滚动范围,可以在布局组件(比如MainLayout.razor或MyTestComponent.razor)中添加带滚动属性的容器:

修改MainLayout.razor

<div style="height: 100vh; overflow-y: auto;">
    @Body
</div>

或修改MyTestComponent.razor

<div style="height: 100%; overflow-y: auto;">
    <!-- 你的组件内容 -->
</div>

额外配置:确保Blazor页面高度正确识别

在wwwroot/css/app.css中添加以下样式,让html和body占满整个可用高度,确保Blazor的滚动容器能正确计算高度:

html, body {
    height: 100%;
    margin: 0;
    padding: 0;
}

两种方案选其一即可:方案一适合统一由MAUI处理页面滚动,方案二更灵活,能针对单个Blazor组件控制滚动区域。

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 16:27:23