如何使用CommunityToolkit.Mvvm初始化ViewModel



我们有一个带有FreshMvvm的Xamarin.Forms应用程序。现在,由于Xamarin.Forms从明年开始将不会得到支持,我正在用.Net Maui重新编写该应用程序。对于MVVM模式,我正在尝试使用CommunityToolkit.MVVM。但我想知道现在如何初始化视图模型。使用FreshMvvm,我可以覆盖Init((,但CommunityToolkit.Mvvm似乎没有这样的功能。由于没有异步构造函数,异步初始化视图模型的正确方法是什么?

我几周前开始使用.net Maui,还需要在视图模型的构造函数中运行异步代码。我从AsyncAwaitBestPractices(nuget包(中找到了方法SafeFireAndForget。异步代码将在不同的线程中运行,构造函数可能会在异步方法之前完成。

FreshMVVM中,由于模型已经实现了FreshBasePageModel,您可以覆盖Init()方法并初始化数据,如下面的伪代码:

   public override void Init (object initData)
    {           
      //initialize data
    }

然而,在CommunityToolkit.Mvvm中,您可以在默认构造函数中随意设置数据,如下所示:

public partial class MainPage : ContentPage
{
    public MainPage(MainPageViewModel vm)
    {
        InitializeComponent();
        BindingContext = vm;
        Initialize();
    }
    public async void Initialize()
    {
        //await operation
    }
}

官方参考链接:https://learn.microsoft.com/en-us/windows/communitytoolkit/mvvm/introduction

相关内容

  • 没有找到相关文章

最新更新