我在被推送到导航堆栈上的页面中有一个控件。弹出页面后,将触发元素的渲染器的OnElementChanged。
为什么在删除元素时这样做?为什么要渲染不可见的组件?
除了某些元素配置代码崩溃之外,这不是什么问题。
答案 0 :(得分:2)
自定义渲染器开始执行时,第一个触发的方法是OnElementChanged
。在此方法中,您可以访问属性并执行任何自定义。
请注意,此方法使用了一个名为ElementChangedEventArgs
的具有两个属性的重要参数。
NewElement
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会有更详细的解释。