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

时间:2012-06-25 22:33:39

标签: webview zoom windows-8 windows-runtime

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

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

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

2 个答案:

答案 0 :(得分:2)

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

在您的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中的问题,因为 没有滑块。

希望有人能找到更好的答案。

答案 1 :(得分:0)

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

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