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

Mopup弹窗关闭后如何调用原页面OnAppearing更新CollectionView

解决Mopup弹窗删除数据后更新CollectionView的简单方法

不需要手动调用OnAppearing,直接刷新数据源或更新集合更直接,这里给你两个简单的实现方式:

方法1:弹窗关闭后直接调用原页面的刷新方法

在弹窗的删除按钮事件里,关闭弹窗后获取导航栈中的原页面,调用自定义刷新方法:

弹窗中的修改代码:

private async void DeleteItem_Clicked(object sender, EventArgs e)
{
    var result = await DisplayAlert("Delete", $"Delete {Item.Name} from the database", "Yes", "No");
    if (result)
    {
        await App.Database.DeleteItem(Item);
        await MopupService.Instance.PopAsync();
        
        // 替换成你的原页面类型,比如MainPage/ItemsPage
        var sourcePage = MopupService.Instance.PopupStack.LastOrDefault() as YourSourcePage;
        sourcePage?.RefreshCollectionView();
    }
}

原页面添加刷新方法:

在包含CollectionView的页面里,新增一个刷新数据源的方法:

public async void RefreshCollectionView()
{
    // 重新从数据库获取最新数据并赋值给CollectionView
    // 如果你用的是普通List:
    YourCollectionView.ItemsSource = await App.Database.GetAllItemsAsync();
    
    // 如果你用的是ObservableCollection,也可以直接移除删除的项(更高效):
    // var existingItem = YourObservableCollection.FirstOrDefault(x => x.Id == Item.Id);
    // if (existingItem != null) YourObservableCollection.Remove(existingItem);
}

方法2:通过事件回调通知原页面刷新

这种方式更解耦,不需要硬编码原页面类型:

弹窗类中添加事件:

// 在弹窗类的顶部定义事件
public event EventHandler ItemDeleted;

private async void DeleteItem_Clicked(object sender, EventArgs e)
{
    var result = await DisplayAlert("Delete", $"Delete {Item.Name} from the database", "Yes", "No");
    if (result)
    {
        await App.Database.DeleteItem(Item);
        await MopupService.Instance.PopAsync();
        
        // 触发删除完成事件
        ItemDeleted?.Invoke(this, EventArgs.Empty);
    }
}

原页面打开弹窗时订阅事件:

在你打开Mopup弹窗的地方,添加事件订阅:

// 实例化弹窗并传入Item
var itemPopup = new YourItemPopup(Item);
// 订阅删除完成事件
itemPopup.ItemDeleted += (sender, e) =>
{
    RefreshCollectionView(); // 调用之前写的刷新方法
};
// 打开弹窗
await MopupService.Instance.PushAsync(itemPopup);

两种方法都不需要依赖MVVM,都是简单的代码实现,选哪种看你自己的需求。如果原页面类型固定,方法1更直接;如果需要复用弹窗,方法2更灵活。

内容的提问来源于stack exchange,提问作者Mufacka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 10:35:49