首页 > 解决方案 > Xamarin.Forms - 从 ImageButtonRenderer 获取控制

问题描述

我正在尝试创建一个名为 TintedImageButton 的 ImageButton 子类,它(惊喜)可以为图像着色。我正在遵循我发现的一些 TintedImage 代码的基本结构。

TintedImageButton 为 iOS、Android 和 UWP 提供了三个渲染器。

Android 版本的 TintedImageButtonRenderer 无法正常工作,因为它无法访问其超类 ImageButtonRenderer 的“Control”属性。控件应该是本机小部件。

我一直无法找到 ImageButtonRenderer 的类文档,但反编译似乎表明 Control 属性已为 Android 设置为私有,但不适用于 iOS。有谁知道这可能是为什么?如何获取本机小部件以便修改它?

标签: xamarin.formsxamarin.android

解决方案


ImageButtonRenderer继承自AppCompatImageButton,因此该类myImageButtonRender本身是本机控件,它是 的子类AppCompatImageButton

[assembly: ExportRenderer(typeof(TintedImageButton), typeof(myImageButtonRender))]
namespace App261.Droid
{
    class myImageButtonRender : ImageButtonRenderer
    {
        public myImageButtonRender(Context context) : base(context)
        {

        }


        protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.ImageButton> e)
        {
            base.OnElementChanged(e);


            this.SetImageResource(Resource.Drawable.sample);

            AppCompatImageButton imagV = this as AppCompatImageButton;

        }
    }
}

推荐阅读