Mel*_*per 2 c# custom-renderer xamarin.forms uwp
我有一个名为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)
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:正如下面提到的,渲染器本身只是IS本机控制.
您可以使用它this
来访问本机控件实例.
if (e.OldElement == null)
{
var nativeCtrl = this;
Run Code Online (Sandbox Code Playgroud)
或者,使用this.ContainerElement
.
编辑1 - 注意:上面的代码将提供对本机控件容器的访问.哪个效果很好ContentView
; 因为大多数本地行为,例如手势处理等都可以分配给它.