Как инициализировать ViewModel с помощью CommunityToolkit.Mvvm

У нас есть приложение Xamarin.Forms с FreshMvvm. Теперь, поскольку Xamarin.Forms не будет поддерживаться в следующем году, я переписываю приложение с помощью .Net Maui. Для шаблона MVVM я пытаюсь использовать CommunityToolkit.Mvvm. Но мне интересно, как теперь я могу инициализировать модель представления. С FreshMvvm я мог бы переопределить Init(), но в CommunityToolkit.Mvvm, похоже, нет ничего подобного. Каков правильный способ асинхронной инициализации модели представления, поскольку нет асинхронного конструктора?

2 ответа

В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

Я начал работать с .net Maui несколько недель назад, и мне также нужна была возможность запуска асинхронного кода в конструкторе модели представления. Я нашел методSafeFireAndForgetотAsyncAwaitBestPractices( пакет nuget ). Асинхронный код будет выполняться в другом потоке, и конструктор может завершиться раньше асинхронного метода.

Другие вопросы по тегам