在 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();
}
我正在尝试了解当页面从网络获取初始数据时在 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();
}