Windows缩放超100%时.NET MAUI Blazor Hybrid窗口底部滚轮失效
问题成因分析
这个问题的核心是Windows高DPI缩放场景下,MAUI窗口与WebView2控件的坐标映射错位,具体拆解如下:
高DPI缩放的坐标转换误差:当Windows显示缩放(如125%)时,MAUI窗口的逻辑像素和物理像素之间存在缩放转换,但WebView2控件的事件捕获区域没有正确同步这个缩放比例。系统会误将窗口底部的逻辑像素区域判定为不属于WebView2控件的范围,导致滚轮事件被MAUI原生窗口拦截,无法传递到WebView2的渲染器。100%缩放时无转换误差,所以问题消失。
系统事件处理层级差异:滚轮事件和鼠标移动事件的系统处理逻辑不同——滚轮事件会先由系统判断目标控件区域,再分发;而鼠标移动事件是直接传递到指针当前位置的控件。当坐标映射错位时,系统认为底部区域属于MAUI原生窗口而非WebView2,因此滚轮事件被窗口拦截,而鼠标移动、点击等事件仍能正常到达WebView2。
环境适配逻辑差异:普通Edge/Chrome浏览器本身对Windows高DPI缩放有完善的原生适配,事件区域判定准确;Android端的WebView控件与系统的DPI适配逻辑和Windows完全不同,不存在这类坐标映射问题,因此同款页面在这些环境下无异常。
内容的提问来源于stack exchange,提问作者Brett
相关产品推荐
相关产品推荐

