Xaml Xamarin在自定义渲染器中获取本机控件

Xaml Xamarin在自定义渲染器中获取本机控件,xaml,xamarin,xamarin.forms,custom-renderer,Xaml,Xamarin,Xamarin.forms,Custom Renderer,我有两个自定义视图HybridEntry和HybridSlider,每个平台都有自定义渲染器。在自定义渲染器中,HybridSlider必须使用HybridEntry的一些特定于平台的功能 简而言之,我想在HybridSlider的自定义渲染器中访问HybridEntry的本机控件 我可以通过在HybridSlider类内声明名为HybridEntry的属性,将Forms HybridEntry的引用传递给xaml中的Forms HybridSlider类 XAML: UWP中HybridSli

我有两个自定义视图HybridEntry和HybridSlider,每个平台都有自定义渲染器。在自定义渲染器中,HybridSlider必须使用HybridEntry的一些特定于平台的功能

简而言之,我想在HybridSlider的自定义渲染器中访问HybridEntry的本机控件

我可以通过在HybridSlider类内声明名为HybridEntry的属性,将Forms HybridEntry的引用传递给xaml中的Forms HybridSlider类

XAML:

UWP中HybridSlider的自定义渲染器-

using Windows.UI.Xaml.Controls;
using Xamarin.Forms.Platform.UWP;

[assembly: ExportRenderer(handler: typeof(Core.CustomView.HybridSlider), target: typeof(Demo.UWP.Renderers.HybridSliderwRenderer))]
namespace Demo.UWP.Renderers
{
    public class HybridSliderwRenderer : ViewRenderer<Core.CustomView.HybridSlider, UserControl>
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Core.CustomView.HybridSlider> e)
        {
            base.OnElementChanged(e);

            if (Control == null)
            {
                var formsHybridEntry = e.NewElement.HybridEntry;

                Demo.UWP.HybridEntry uwpEntry= (Demo.UWP.HybridEntry)formsHybridEntry; // I WANT TO GET THE NATIVE control here
            }
        }
    }
}

如何访问与HybridSlider的自定义呈现程序中的HybridEntry类关联的本机控件类?

这篇博文重点介绍如何获取共享控件的本机控件

对于UWP,它可能非常类似,definitel查看renderFactory.GetRenderer视图方法。但它可能已经过时了。如果是这样,你会在网上找到最新的方法

using Windows.UI.Xaml.Controls;
using Xamarin.Forms.Platform.UWP;

[assembly: ExportRenderer(handler: typeof(Core.CustomView.HybridSlider), target: typeof(Demo.UWP.Renderers.HybridSliderwRenderer))]
namespace Demo.UWP.Renderers
{
    public class HybridSliderwRenderer : ViewRenderer<Core.CustomView.HybridSlider, UserControl>
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Core.CustomView.HybridSlider> e)
        {
            base.OnElementChanged(e);

            if (Control == null)
            {
                var formsHybridEntry = e.NewElement.HybridEntry;

                Demo.UWP.HybridEntry uwpEntry= (Demo.UWP.HybridEntry)formsHybridEntry; // I WANT TO GET THE NATIVE control here
            }
        }
    }
}