You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 23:41:28