C# 在Xamarin.Forms MVVM应用程序中的何处加载数据?
在Xamarin.Forms MVVM体系结构应用程序中加载数据的最佳位置在哪里?例如: 我正在使用一个选项卡式页面,其中一些内容页面包含选择器。选择器项资源绑定到ViewModel属性。在哪里放置加载选择器项源数据的逻辑的最佳位置 我可以在ViewModel构造函数中完成,但我不认为这是推荐的,因为在构造函数中加载数据只是糟糕的编码。不幸的是,我在页面上找不到任何“已加载”。也许可以使用“OnAppearing”事件C# 在Xamarin.Forms MVVM应用程序中的何处加载数据?,c#,xamarin,mvvm,xamarin.forms,C#,Xamarin,Mvvm,Xamarin.forms,在Xamarin.Forms MVVM体系结构应用程序中加载数据的最佳位置在哪里?例如: 我正在使用一个选项卡式页面,其中一些内容页面包含选择器。选择器项资源绑定到ViewModel属性。在哪里放置加载选择器项源数据的逻辑的最佳位置 我可以在ViewModel构造函数中完成,但我不认为这是推荐的,因为在构造函数中加载数据只是糟糕的编码。不幸的是,我在页面上找不到任何“已加载”。也许可以使用“OnAppearing”事件 数据加载是异步的,我目前根本没有使用任何MVVM框架。这取决于您希望使用的M
数据加载是异步的,我目前根本没有使用任何MVVM框架。这取决于您希望使用的MVVM框架。我个人更喜欢。这有一个
Init
方法,您可以在ViewModel中覆盖它,它是加载数据的理想位置。它还为您提供了简单的导航方法。Init
方法也是将新视图推送到导航堆栈时可以传递数据的地方。此外,它还提供了viewsappearing
和viewsdisappearing
方法
public override void Init (object initData)
{
base.Init (initData);
}
public override void ReverseInit(object returnedData)
{
base.ReverseInit(returnedData);
}
protected override void ViewIsAppearing(object sender, EventArgs e)
{
base.ViewIsAppearing(sender, e);
}
protected override void ViewIsDisappearing(object sender, EventArgs e)
{
base.ViewIsDisappearing(sender, e);
}
谢谢目前,我根本没有使用MVVM框架,因为我所有的ViewModel都保存在.netstandard 1.6项目中,而且MVVM light和freshmvvm似乎正在强制将视图和模型放在同一个项目中,我不会这么做。也许您知道什么时候调用fresh mvvm的init方法?当内置IOC容器尝试解析PageModel的实例时,就会调用它。这是通过
FreshPageModelResolver
类完成的,谢谢。这很好,因为我使用autofac作为IoC,所以我可以尝试初始化已注册实例的OnActivating事件的H视图。最好的方法是在另一个线程上异步初始化。