如何使用Xamarin.Forms自定义呈现程序在ButtonClick()中执行特定于平台(Android)的方法。

如何使用Xamarin.Forms自定义呈现程序在ButtonClick()中执行特定于平台(Android)的方法。,xamarin.forms,custom-renderer,Xamarin.forms,Custom Renderer,导言: 我从以下代码开始: 研究自定义渲染器。我这样做是因为有一些代码只在android平台上执行。让我们调用这个“androidMethod()”并属于Android代码库(而不是共享库)。我注意到,我发现的大多数示例都使用CustomRenders进行特定于平台的UI修改(如链接中的示例),但我不打算对UI进行任何更改,而是尝试将特定于平台的方法放置在Xamarin.Forms ButtonClick()方法中,如下面的代码所示 下面的代码与链接中MyEntryRenderer.cs中的代

导言:

我从以下代码开始:

研究自定义渲染器。我这样做是因为有一些代码只在android平台上执行。让我们调用这个“androidMethod()”并属于Android代码库(而不是共享库)。我注意到,我发现的大多数示例都使用CustomRenders进行特定于平台的UI修改(如链接中的示例),但我不打算对UI进行任何更改,而是尝试将特定于平台的方法放置在Xamarin.Forms ButtonClick()方法中,如下面的代码所示

下面的代码与链接中MyEntryRenderer.cs中的代码类似,但您会看到它被修改为应用于按钮而不是条目

MyButtonRenderer.cs:

使用Xamarin.Forms.Platform.Android;
使用Xamarin.Forms;
使用自定义渲染器;
使用CustomRenderer.Android;
使用Android.Content;
[程序集:ExportRenderer(typeof(MyButton)、typeof(MyButtonRenderer))]
名称空间CustomRenderer.Android
{
类MyButtonRenderer:ButtonRenderer
{
私人按钮和按钮;
公共MyButtonRenderer(上下文):基(上下文)
{
}
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(控件!=null)
{
//我希望能够做到以下几点:
ButtonClick(androidMethod());
}
}
}
}

如何获取androidMethod();在这个上下文中执行。我发现的样本是有限的,所以请尽量将您的回答限制在与示例兼容的范围内。谢谢

如果要执行特定于平台的方法,我将使用而不是自定义渲染器

如果要执行特定于平台的方法,我将使用DependencyService而不是自定义渲染器哇,您可能已经保存了我。我是否错误地认为自定义渲染器可以做除UI修改之外的任何事情?自定义渲染器可以做其他特定于平台的事情,但它主要面向UI如果你提出一个问题,我相信你。谢谢
using Xamarin.Forms.Platform.Android;
using Xamarin.Forms;
using CustomRenderer;
using CustomRenderer.Android;
using Android.Content;

[assembly: ExportRenderer(typeof(MyButton), typeof(MyButtonRenderer))]
namespace CustomRenderer.Android
{
    class MyButtonRenderer : ButtonRenderer
    {
        private Button androidButton;

        public MyButtonRenderer(Context context) : base(context)
        {
        }

        protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
        {
            base.OnElementChanged(e);

            if (Control != null)
            {
                //I want to be able to do something like this:
                ButtonOnClick(androidMethod());
            }
        }
    }
}