我有一个名为RecordProvider2的类。它继承自ContentView。我想在幕后获取本机控件的实例。我不确定UWP上的控件是什么,但根据这篇文章,它应该是FrameworkElement(https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/custom-renderer/renderers/)。
所以,我编写了这个自定义渲染器,并且根据所有帐户,我应该能够使用" Control"来访问本机控件。渲染器的属性。但是,在OnElementChanged事件中,Control属性始终为null。我做错了什么?
public class RecordProvider2Renderer : ViewRenderer<RecordProvider2, FrameworkElement>
{
protected override void OnElementChanged(ElementChangedEventArgs<RecordProvider2> e)
{
base.OnElementChanged(e);
if (Control != null)
{
}
}
}
编辑:如下所述,渲染器本身只是 IS 本机控件。
答案 0 :(得分:6)
您可以使用this
来访问本机控件实例。
if (e.OldElement == null)
{
var nativeCtrl = this;
或者,使用this.ContainerElement
。
编辑1 - 注意:上面的代码将允许访问本机控件容器。哪个适用于ContentView
;因为大多数本地行为,例如手势处理等都可以分配给它。
答案 1 :(得分:0)
您需要
SetNativeControl(new Panel())
在控制权为NOT-NULL
之前。
面板是您要呈现的任何本机控件。