OnElementChanged(ElementChangedEventArgs <t>什么时候触发?

时间:2018-06-24 19:56:46

标签: xamarin.forms

我在被推送到导航堆栈上的页面中有一个控件。弹出页面后,将触发元素的渲染器的OnElementChanged。

为什么在删除元素时这样做?为什么要渲染不可见的组件?

除了某些元素配置代码崩溃之外,这不是什么问题。

1 个答案:

答案 0 :(得分:2)

自定义渲染器开始执行时,第一个触发的方法是OnElementChanged。在此方法中,您可以访问属性并执行任何自定义。

请注意,此方法使用了一个名为ElementChangedEventArgs的具有两个属性的重要参数。

  1. NewElement
  2. OldElement

NewElement包含对Xamarin Forms控件的引用。 OldElement包含对Xamarin Forms控件附加到的渲染器的引用。重要的是要注意预订取消预订事件的两个属性,以避免内存泄漏

protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
{
    base.OnElementChanged(e);

    if (e.NewElement != null)
    {
        // Subscribe for events

        e.NewElement.SizeChanged += XFButtonOnSizeChanged;
    }
    else if (e.OldElement != null)
    {
        // Unsubscribe from events

        e.OldElement.SizeChanged -= XFButtonOnSizeChanged;
    }
}

P.S .:通常,我会共享指向official documentation的链接,但是在这种情况下,the realm academy会有更详细的解释。