【发布时间】:2019-04-17 18:22:45
【问题描述】:
简介:
我从以下代码开始:
https://github.com/xamarin/xamarin-forms-samples/tree/master/CustomRenderers/Entry/Android
研究自定义渲染器。我这样做是因为有些代码只能在 android 平台上执行。让我们称之为“androidMethod()”并属于 Android 代码库(不是共享库)。我注意到我发现的大多数示例都使用 customRenderers 来进行特定于平台的 UI 修改(如链接中的示例),但我不打算对 UI 进行任何更改,而是尝试在其中放置特定于平台的方法如下代码所示的 Xamarin.Forms ButtonOnClick() 方法。
下面的代码类似于您在链接中的 MyEntryRenderer.cs 中找到的代码,但您会看到它被修改为应用于按钮而不是条目。
MyButtonRenderer.cs:
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());
}
}
}
}
我如何获得 androidMethod();在这种情况下执行。我找到的示例是有限的,因此请尽量将您的回复限制在与示例兼容的内容上。谢谢!
【问题讨论】:
-
如果你想执行特定于平台的方法,我会使用 DepenencyService 而不是自定义渲染器
-
哇,你可能救了我。我是否错误地认为自定义渲染器除了 UI 修改之外还可以做任何事情?
-
自定义渲染器可以做其他平台特定的事情,但它主要面向 UI
-
如果你提出问题,我给你信用。谢谢。
标签: xamarin.forms custom-renderer