Xaml 如何解决WebViewRenderer已过时的问题
这就是我得到的错误“WebViewRenderer.WebViewRenderer()已过时” “从2.5版开始,此构造函数已过时。请改用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;
使用系统;
使用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)
{
}