我在页面中有一个控件被推送到导航堆栈上。弹出页面后,将触发元素渲染器的 OnElementChanged。
为什么在删除元素时要这样做?为什么它渲染一个不可见的组件?
除了某些元素配置代码崩溃之外,这不会是一个问题。
当自定义渲染器开始执行时,第一个被触发的方法是OnElementChanged。在此方法中,您可以访问属性并执行任何自定义。
需要注意的是,此方法使用一个具有两个属性的重要参数ElementChangedEventArgs。
NewElementOldElementNewElement包含对 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;
}
}
Run Code Online (Sandbox Code Playgroud)
PS:通常我会分享官方文档的链接,但在这种特殊情况下,我认为领域学院有更详细的解释。
| 归档时间: |
|
| 查看次数: |
2205 次 |
| 最近记录: |