在 Xamarin Forms 中获取初始数据模式

Getting initial data pattern in Xamarin Forms

我正在尝试了解当页面从网络获取初始数据时在 Xamarin Forms 中使用的模式 API。

该页面绑定到 ViewModel。让我们使用这个简单的例子:

public class DataFeedViewModel : BaseViewModel
{
   public DateFeedViewModel()
   {
       Title = "My Feed";
   }

   public List<FeedItem> Feed { get; set; }

}

DataFeedViewModel绑定到页面:

public MainPage()
{
    InitializeComponent();
    this.BindingContext = new DataFeedViewModel();
}

据我了解,我使用 OnAppearing() 方法从后端获取我的初始数据集 API:

protected override async void OnAppearing()
{
    base.OnAppearing();

    var result = await _myApiService.GetFeed();
    // What's next? Do I simply do the following?
    // new DataFeedViewModel
    // {
    //     Feed = result
    // }
}

第二个但非常重要的问题是这种模式是否是推荐的方法。

当我了解 Xamarin 和 .NET Maui 时,我了解到,趋势是从事件驱动模型转向更 MVVM 命令驱动的方法。

我有点困惑如何使用 ViewModel 来利用这些生命周期方法,例如 OnAppearing()

在您的 VM 上创建一个 Init 方法

public class DataFeedViewModel : BaseViewModel
{
   public DateFeedViewModel()
   {
       Title = "My Feed";
   }

   public List<FeedItem> Feed { get; set; }

   public async void Init()
   {
       Feed = await _myApiService.GetFeed();
   }
}

然后让您的页面调用它

private DataFeedViewModel VM { get; set; }

public MainPage()
{
    InitializeComponent();
    this.BindingContext = VM = new DataFeedViewModel();
}

protected override async void OnAppearing()
{
    base.OnAppearing();

    await VM.Init();
}