我有一个在Xamarin.Forms中创建的WebView对象:
WebView webView = new WebView {
HorizontalOptions = LayoutOptions.FillAndExpand,
VerticalOptions = LayoutOptions.FillAndExpand
};
我需要对这个对象做一些特定于平台的操作:调用Xamarin.Forms中不可用的一些函数,因为它们在不同平台上具有不同的性质 .
问题是,当我传递Xamarin.Forms对象时:
public interface IWebViewCallCSharp
{
void passWebView(WebView webView);
}
我可以在_1075081上完成与Xamarin.Forms完全相同的事情 . 如何在每个平台上获得WebView的一些特定于平台的功能?如何将this转换为this?
1 回答
您需要实现一个所谓的自定义渲染器 . 从这里开始:Implementing a HybridWebView .
总之,您需要:
创建HybridWebView自定义控件 .
从Xamarin.Forms中使用HybridWebView .
在每个平台上为HybridWebView创建自定义渲染器 .
在最后一步中你需要
创建呈现自定义控件的ViewRenderer类的子类 . 第一个类型参数应该是渲染器用于的自定义控件,在本例中为HybridWebView . 第二个类型参数应该是将实现自定义视图的本机控件 .
重写OnElementChanged方法,该方法呈现自定义控件并编写逻辑以对其进行自定义 . 创建相应的Xamarin.Forms自定义控件时,将调用此方法 .
将ExportRenderer属性添加到自定义渲染器类,以指定它将用于呈现Xamarin.Forms自定义控件 . 此属性用于向Xamarin.Forms注册自定义渲染器 .
您开始使用本机控件的起点是
OnElementChanged
覆盖 .