如何从iOS自定义渲染器在基本Frame Renderer中调用方法?

Ala*_*an2 4 xamarin xamarin.forms

我有以下代码:

public partial class PhrasesFrameRenderer : Frame
{
    Random rand = new Random();
    private int answeredPhraseCount;
    private int correctAns;

    public PhrasesFrameRenderer()
    {
        InitializeComponent();
        App.PhrasesFrameRenderer = this;

        public void abc()
        {

            ....
        };
Run Code Online (Sandbox Code Playgroud)

和自定义渲染器

[assembly: ExportRenderer(typeof(PhrasesFrameRenderer), typeof(PhrasesFrameCustomRenderer))]
namespace Japanese.iOS
{
    public class PhrasesFrameCustomRenderer : FrameRenderer
    {
        UISwipeGestureRecognizer leftSwipeGestureRecognizer;
        UISwipeGestureRecognizer rightSwipeGestureRecognizer;
        PhrasesFrameRenderer frame;
        bool rightSwipeEnabled = false;
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释如何通过自定义渲染器代码在短语框架渲染器中调用ABC函数。

pin*_*dax 8

在CustomRenderer中,该Element属性基本上是您在PCL Xamarin Forms类中声明的视图PhrasesFrameRenderer

您只需要将此属性转换为类,就可以访问所有公共方法和属性。

var frame = (PhrasesFrameRenderer)Element;
frame.abc();
Run Code Online (Sandbox Code Playgroud)

要么

var frame = Element as PhrasesFrameRenderer;

if(frame != null)
    frame.abc();
Run Code Online (Sandbox Code Playgroud)

这应该工作。

注意事项:我不会将“自定义”视图称为“渲染器”,因为这会与其实际渲染器产生混淆。您的自定义框架可以命名为PhrasesFrame