【发布时间】:2017-02-23 02:22:46
【问题描述】:
我正在尝试使用自定义渲染器获取在 Web 视图中渲染的网页的高度。我已经成功连接到 Load_Completed 事件,该事件在页面完全呈现时正确触发,但似乎没有任何东西暴露内容的高度。
我可以用什么来获得这个?
提前致谢。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms.Platform.UWP;
using Xamarin.Forms;
using Windows.UI.Xaml.Navigation;
using Windows.UI.Xaml.Controls;
[assembly: ExportRenderer(typeof(Xamarin.Forms.WebView), typeof(ExtendedViewWebRenderer))]
namespace Project.UWP.CustomRenderers
{
public class ExtendedViewWebRenderer : WebViewRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.WebView> e)
{
base.OnElementChanged(e);
if (Control != null)
{
Control.LoadCompleted += Load_Completed;
}
}
private void Load_Completed(object sender, Windows.UI.Xaml.Navigation.NavigationEventArgs e)
{
var _webView = (Windows.UI.Xaml.Controls.WebView)sender;
//Grab content's height here
}
}
}
【问题讨论】:
-
这个 SO 答案可能会有所帮助:stackoverflow.com/a/29150321/2913599
-
@jgoldberger 是 Javascript 捕获渲染页面高度的唯一方法吗?
-
你可以像@jgoldberger 说的那样使用
InvokeScriptAsync的方法,但似乎你无法避免js。以下是您可以参考的示例代码:github.com/elvisxia/WebViewDynamicHeightSample -
谢谢,我已经设法让它的 JS 部分工作,但现在在我将内容高度传递给 webview.height 后它不会重绘/重新渲染视图...有没有办法强制它重绘?
标签: c# xamarin xamarin.forms uwp uwp-xaml