在Xamarin Forms Platform渲染器上,何时应该调用base.OnElementChanged(e)base.OnElementPropertyChanged(e)

时间:2017-08-25 17:50:32

标签: xamarin xamarin.ios xamarin.android xamarin.forms

Xamarin大学有以下代码。

using System.ComponentModel;
using XFDraw;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
using XFDraw.iOS;

[assembly: ExportRenderer(typeof(SketchView), typeof(SketchViewRenderer))]
namespace XFDraw.iOS
{
    class SketchViewRenderer : ViewRenderer<SketchView, PaintView>
    {
        protected override void OnElementChanged(ElementChangedEventArgs<SketchView> e)
        {
            base.OnElementChanged(e);

            if (Control == null)
            {
                var paintView = new PaintView();
                paintView.SetInkColor(this.Element.InkColor.ToUIColor());
                SetNativeControl(paintView);
            }


          // move the base call to here??
        }
        protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            base.OnElementPropertyChanged(sender, e);

            if (e.PropertyName == SketchView.InkColorProperty.PropertyName)
            {
                Control.SetInkColor(Element.InkColor.ToUIColor());
            }

          // move the base call to here??
        }
    }
}

我怀疑如果我想创建一个具有可覆盖平台细节的可重用控件,我需要将基本调用移动到每个方法中的最后一个操作。

1 个答案:

答案 0 :(得分:2)

您通常应首先调用它,这个想法是您希望您的更改覆盖基础正在执行的任何操作。