Xamarin Forms - 自定义渲染器无法获取本机控件 (UWP)

Xamarin Forms - Custom Renderer Can't Get Native Control (UWP)

我有一个名为 RecordProvider2 的 class。它继承自 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)
        {
        }
    }
}

编辑:如下所述,渲染器本身原生控件。

您可以使用 this 访问本机控件实例。

 if (e.OldElement == null)
 {
       var nativeCtrl = this;

或者,使用 this.ContainerElement.

编辑 1 - 注意:以上代码将提供对本机控件容器的访问权限。这对 ContentView 非常有效;因为大多数本机行为(例如手势处理等)都可以分配给它。

你需要,

SetNativeControl(new Panel())

控制之前是 NOT-NULL

面板是您正在渲染的任何本机控件。