4

如何更改 WinRT Webview的缩放级别?

如果我给它焦点,我可以使用键盘放大/缩小CTRL+ +CTRL+ -
但这可以通过代码完成吗?

注意:将 WebView 放在 ScrollViewer 中并让其缩放,这不是我想要的。

4

2 回答 2

2

不幸的是,我认为没有办法直接在托管代码中执行此操作。但是,如果您拥有内容或可以注入一些 css / 脚本,则有一种解决方法。

在您的 HTML 中,添加以下 css:

<style type="text/css">
body
{
zoom:100%;
}
</style>

在您的 HTML 中还包括这样的脚本块:

function setZoomLevel(newZoom) {
    document.styleSheets[0]['rules'][0].style['zoom'] = newZoom;
}

在您的 C# 代码中,添加一个辅助方法:

private void SetZoomLevel(int level)
{
    string slevel = string.Format("{0}%", level);
    webBrowser.InvokeScript("setZoomLevel", slevel);
}

在您的 C# 代码中,您现在可以通过调用来调整缩放级别:

SetZoomLevel(200);

这是我能找到的最好的,不幸的是,如果你不能注入样式和一些脚本,它就不起作用。

注意:虽然这确实以与调整缩放滑块几乎相同的方式缩放内容,但缩放滑块在桌面浏览器中不受影响。因此,如果您调用SetZoomLevel(200); 上面然后将滑块设置为 200%,您实际上会看到 400%。这在 WebView 中应该不是问题,因为没有滑块。

希望有人提出更好的答案。

于 2012-07-30T20:18:38.307 回答
0

嗯,好问题。我正在研究ITransformProvider2 接口,它是可访问性 API 的一部分,并为您提供桌面和 Metro 应用程序的编程缩放功能,但由于 WebView 是密封的,我担心它不会太有用。无论如何发布此信息,以防它帮助其他人取得进展。

Magnus,出于好奇,为什么 ScrollViewer 解决方案不适合您?

于 2012-07-26T15:09:09.957 回答