Xamarin.Forms中PopModalAsync时HandleModalPopping多次触发问题
问题描述
我的Xamarin.Forms项目运行正常,但存在一个问题:当使用代码this.Navigation.PopModalAsync();关闭模态页时,HandleModalPopping方法会被多次触发(预期仅触发1次)。
方法定义如下:
private void HandleModalPopping(object sender, ModalPoppingEventArgs e) { GV.DoubleClicled = false; }
我在页面构造函数的InitializeComponent();方法之后,通过以下代码注册该事件:
PhotoHandle.App.Current.ModalPopping += HandleModalPopping;
注:首次打开并关闭页面时,该方法触发1次,但每多打开关闭一次页面,触发次数就会递增!
问题原因
每次打开该页面时,都会在构造函数中给App.Current.ModalPopping事件重复注册同一个HandleModalPopping方法。页面关闭时如果没有取消注册,事件的委托列表会累积多个相同的方法实例,导致每次触发事件时,这些方法都会被执行一次,触发次数随页面打开次数递增。
解决方法
- 在页面的
OnDisappearing方法中取消事件注册,确保页面销毁时移除绑定:
protected override void OnDisappearing() { base.OnDisappearing(); PhotoHandle.App.Current.ModalPopping -= HandleModalPopping; }
- 或者将事件注册逻辑移到
App的初始化代码中,只注册一次,避免重复绑定。
内容的提问来源于stack exchange,提问作者Khalid Osama
相关产品推荐
相关产品推荐

