W8.1 UWP / Xaml WebView在高DPI屏幕上渲染较小

时间:2016-10-07 08:32:50

标签: c# wpf xaml windows-store-apps uwp

我们的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操作系统之间存在比例因子冲突,但我无法找到有关该特定问题的更多信息。

任何建议都会受到欢迎,因为我无法想象我们所做的事情是那么罕见。

由于

1 个答案:

答案 0 :(得分:0)

原来这是由多种因素共同引起的:

  1. 我们正在使用Bootstrap 3,它将根HTML字体大小设置为10px,并且随着IE WebView(Even Edge)使用字体大小调整来处理DPI缩放,设置基本字体大小会禁用此功能。
  2. 目标Windows 8.1的Windows应用程序的最大扩展速度为200%(因为这是当时支持的最大值)。但是,Windows 10将此限制增加到iirc 400%。我的笔记本电脑屏幕设置为250%,因为它是4k,但是当我把一个Windows 8.1应用程序放到它上面时,它们的最大值是200%,因此也有轻微的尺寸缩小。
  3. 我仍然认为这在Windows Store WebView控件中是一个相当严重的问题,就好像我在标准边缘打开引导程序站点一样,没关系。即使我对IE11做同样的事情,即使IE11本身根本不处理DPI,页面内容看起来也不错。