ios 通过.NET MAUI中的OnResume事件刷新列表

xxe27gdn  于 2023-02-26  发布在  iOS
关注(0)|答案(1)|浏览(183)

关于ScrollViewer & RefreshView中的一个已知.NET MAUI错误(讨论here),我正在尝试找到一个解决方案。
所以我删除了我的RefreshView,现在只使用CollectionView。现在唯一缺少的函数是我的列表的“refresh-function”,我想现在用App.xaml.cs中的OnResume事件触发它,现在看起来像这样:

public partial class App : Application
{
    public App()
    {
        InitializeComponent();
        DependencyService.Register<Services.MockDataStore>();
        MainPage = new AppShell();      
    }

    protected override void OnResume()
    {
        base.OnResume();
        // method call should be implemented here
    }
}

有人知道如何从我的视图模型中通过这行代码访问一个方法吗?非常感谢。

zte4gxcn

zte4gxcn1#

您可以使用WeakReferenceManager来完成此任务。
首先,定义一个类作为消息的类型:

public class ResumeMessage {}

然后,在ViewModel或View (取决于刷新CollectionView的位置和方式) 中,您可以订阅ResumeMessage,如下所示:

WeakReferenceMessenger.Default.Register<ResumeMessage>(this, (sender, args) =>
{
    // here you can refresh the CollectionView
});

App类的OnResume()方法中,您可以发送消息,通知所有订阅者应该根据ResumeMessage执行某些操作:

public partial class App : Application
{
    public App()
    {
        InitializeComponent();
        DependencyService.Register<Services.MockDataStore>();
        MainPage = new AppShell();      
    }

    protected override void OnResume()
    {
        base.OnResume();
        WeakReferenceMessenger.Default.Send(new ResumeMessage());
    }
}

相关问题