W8.1 UWP / Xaml WebView 在高 DPI 屏幕上呈现较小
Posted
技术标签:
【中文标题】W8.1 UWP / Xaml WebView 在高 DPI 屏幕上呈现较小【英文标题】:W8.1 UWP / Xaml WebView rendering small on High DPI Screens 【发布时间】:2017-02-16 04:41:21 【问题描述】:我们的 Windows 商店应用程序存在问题,它使用 WebView 显示来自文件系统的自定义生成的 html。该应用程序是用 WPF / Xaml 编写的,因此本机 UI 组件会根据用户设置的屏幕缩放比例自动缩放 - 但是嵌入式 WebView 不会 - 这意味着在我的笔记本电脑的 4k 屏幕上,WebView 字体非常小。目前我们必须支持 Windows 8.1,因此我们正在为该目标进行编译——这意味着我们正在嵌入一个 IE11 实例。我认为设置浏览器缩放级别可能是一个短期解决方案,但它最终会在主窗口上出现水平滚动条,所以这是不行的。
我发现了一个MSDN article,它表明底层 COM 组件存在问题,即没有自动通知它所嵌入的应用程序的高 DPI 意识。本文展示了如何通过覆盖组件发送的标志来解决此问题。然而,沿着这条路线走下去,似乎 UWP 平台上可用的 WebView 被进一步抽象化,您无法获取上述修复工作所需的 Document MSHTML 对象的实例。
我还注意到 answer 这似乎推断 Windows 8.1 应用程序和 Windows 10 操作系统之间存在比例因子冲突,但我无法找到有关该特定问题的更多信息。
任何建议都会受到欢迎,因为我无法想象我们正在做的事情如此罕见。
谢谢
【问题讨论】:
我将使用最新的 SDK/OS 进行调查。 【参考方案1】:原来这是由多种因素造成的:
-
我们正在使用 Bootstrap 3,它将根 HTML 字体大小设置为 10 像素,并且由于 IE WebView (Even Edge) 使用字体大小调整来处理 DPI 缩放,设置基本字体大小会禁用此功能。
面向 Windows 8.1 的 Windows 应用的最大缩放比例为 200%(因为这是当时支持的最大值)。然而,Windows 10 将此限制增加到 iirc 400%。我的笔记本电脑屏幕设置为 250%,因为它是 4k,但是当我将 Windows 8.1 应用程序放到它上面时,它们的最大值是 200%,因此那里的尺寸也略有减小。
我仍然认为这是 Windows Store WebView 控件中的一个相当严重的问题,就好像我在标准边缘打开引导站点一样,这很好。即使我对 IE11 做同样的事情,即使 IE11 本身根本不处理 DPI,页面内容看起来也不错。
【讨论】:
以上是关于W8.1 UWP / Xaml WebView 在高 DPI 屏幕上呈现较小的主要内容,如果未能解决你的问题,请参考以下文章
Extensions in UWP Community Toolkit - WebViewExtensions
默认情况下如何以全屏模式启动 uwp webview 应用程序
UWP DependencyObject 绑定 Windows.UI.Xaml.Markup.XamlParseException