如何使用 Xamarin.Forms 自定义渲染器在 ButtonOnClick() 中执行特定于平台 (Android) 的方法。
How to execute a platform (Android) specific method within a ButtonOnClick() using a Xamarin.Forms custom renderer.
简介:
我从以下代码开始:
https://github.com/xamarin/xamarin-forms-samples/tree/master/CustomRenderers/Entry/Android
研究自定义渲染器。我这样做是因为有些代码只在 android 平台上执行。让我们称之为 "androidMethod()" 并且属于 Android 代码库(不是共享库)。我注意到我发现的大多数示例都使用 customRenderer 进行平台特定的 UI 修改(如 link 中的示例),但我打算不对 UI 进行任何更改,而是我试图在 Xamarin.Forms ButtonOnClick() 方法中放置特定于平台的方法,如下面的代码所示。
下面的代码类似于您在 link 中的 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 而不是自定义渲染器
简介:
我从以下代码开始:
https://github.com/xamarin/xamarin-forms-samples/tree/master/CustomRenderers/Entry/Android
研究自定义渲染器。我这样做是因为有些代码只在 android 平台上执行。让我们称之为 "androidMethod()" 并且属于 Android 代码库(不是共享库)。我注意到我发现的大多数示例都使用 customRenderer 进行平台特定的 UI 修改(如 link 中的示例),但我打算不对 UI 进行任何更改,而是我试图在 Xamarin.Forms ButtonOnClick() 方法中放置特定于平台的方法,如下面的代码所示。
下面的代码类似于您在 link 中的 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 而不是自定义渲染器