Xaml 如何解决WebViewRenderer已过时的问题

Xaml 如何解决WebViewRenderer已过时的问题,xaml,xamarin.forms,Xaml,Xamarin.forms,这就是我得到的错误“WebViewRenderer.WebViewRenderer()已过时” “从2.5版开始,此构造函数已过时。请改用WebViewRenderer(上下文) 使用系统; 使用System.Collections.Generic; 使用System.Linq; 使用系统文本; 使用Android.App; 使用Android.Content; 使用Android.OS; 使用Android.Runtime; 使用Android.Views; 使用Android.Widget;

这就是我得到的错误“WebViewRenderer.WebViewRenderer()已过时”

“从2.5版开始,此构造函数已过时。请改用WebViewRenderer(上下文)

使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用Android.App;
使用Android.Content;
使用Android.OS;
使用Android.Runtime;
使用Android.Views;
使用Android.Widget;
使用Xamarin.Forms;
使用ZoomWebView;
使用Xamarin.Forms.Platform.Android;
使用ZoomWebView.Droid;
使用系统组件模型;
使用Android.Webkit;
使用Xamarin.Forms.PlatformConfiguration.AndroidSpecific;
使用Xamarin.Forms.Internals;
使用System.Threading.Tasks;
[程序集:ExportRenderer(typeof(MyWebView)、typeof(MyWebViewRenderer))]
名称空间ZoomWebView.Droid
{
公共类MyWebViewRenderer:WebViewRenderer
{
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(e.OldElement!=null | | Element==null)
{
返回;
}
var element=作为MyWebView的元素;
Control.Settings.TextZoom=element.ZoomInLevel;
}
受保护的覆盖无效OnElementPropertyChanged(对象发送方,PropertyChangedEventArgs e)
{
if(控件!=null)
{
Control.Settings.BuiltInZoomControls=true;
Control.Settings.DisplayZoomControl=true;
}
var element=作为MyWebView的元素;
Control.Settings.TextZoom=element.ZoomInLevel;
base.OnElementPropertyChanged(发送方,e);
}
}

我希望代码能够运行,因为我关注了youtube上的一个特定系列,但事实并非如此。请问我有什么地方做错了吗?

您需要添加上下文:

public MyWebViewRenderer(Context context) : base(context)
{
}
在代码中:

  namespace ZoomWebView.Droid
 {
    public class MyWebViewRenderer : WebViewRenderer
    {
        public MyWebViewRenderer(Context context) : base(context)
        {
        }


        protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
        {
            base.OnElementChanged(e);
            if (e.OldElement != null || Element == null)
            {
                return;
            }
            var element = Element as MyWebView;
            Control.Settings.TextZoom = element.ZoomInLevel;
        }

        protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            if(Control != null)
            {
                Control.Settings.BuiltInZoomControls = true;

                Control.Settings.DisplayZoomControls = true;
            }
            var element = Element as MyWebView;
            Control.Settings.TextZoom = element.ZoomInLevel;
            base.OnElementPropertyChanged(sender, e);
        }
    }
 }
名称空间ZoomWebView.Droid
{
公共类MyWebViewRenderer:WebViewRenderer
{
公共MyWebViewRenderer(上下文):基础(上下文)
{
}
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(e.OldElement!=null | | Element==null)
{
返回;
}
var element=作为MyWebView的元素;
Control.Settings.TextZoom=element.ZoomInLevel;
}
受保护的覆盖无效OnElementPropertyChanged(对象发送方,PropertyChangedEventArgs e)
{
if(控件!=null)
{
Control.Settings.BuiltInZoomControls=true;
Control.Settings.DisplayZoomControl=true;
}
var element=作为MyWebView的元素;
Control.Settings.TextZoom=element.ZoomInLevel;
base.OnElementPropertyChanged(发送方,e);
}
}
}

发生这种情况的原因很简单,从v2.4开始,Xamarin.Forms将Xamarin.Forms.Forms上下文属性标记为过时。因此,要获取渲染器的全局上下文,必须调用该渲染器的基类,即在构造函数中执行以下操作:

public MyWebViewRenderer(Context context) : base(context)
{

}
XF现在建议您使用James Montemagno的

public MyWebViewRenderer(Context context) : base(context)
{

}