如何在 xamarin 表单中的新 mvvm 中将相同的视图模型设置为两个视图
How to set same viewmodel to two views in fresh mvvm in xamarin forms
我有两个视图,添加视图和编辑视图,两个视图不同 UI 但视图模型相同。通过使用 mvvm,我已将绑定上下文设置为两个视图作为相同的视图模型。我是新鲜 mvvm 的新手。在新的 mvvm 中,我不知道如何将相同的视图模型设置为两个视图。另一个是,我已经将参数传递给 viewmodel 构造函数,这在新的 mvvm 中是如何实现的。请提出您宝贵的建议。
通常情况下,伴随的视图会根据名称推断出来。但是对于这个用例,您应该明确提及要使用哪个视图。有一个方法,你应该可以像这样使用它:
// For adding
CoreMethods.PushPageModel<AddEditViewModel, AddView>();
// For editing
CoreMethods.PushPageModel<AddEditViewModel, EditView>();
当然,考虑到您仍然需要为PushPageModel
方法指定的实际参数。另外,我在这里假定了您的视图模型和视图的名称,但我希望它能说明问题。
对于那些有兴趣为您在应用程序中加载的第一个页面(例如启动画面)执行此操作的人,这可能会有所帮助 -
Page page;
if (Xamarin.Forms.Device.Idiom == TargetIdiom.Tablet)
{
page = FreshPageModelResolver.ResolvePageModel<SplashPageModel>();
}
else
{
// We will load our phone only splash screen
page = new SplashPagePhone();
FreshPageModelResolver.BindingPageModel(null, page, new SplashPageModel(FreshIOC.Container.Resolve<DataService>()));
}
var navContainer = new FreshMvvm.FreshNavigationContainer(page)
{
BarTextColor = Color.White
};
MainPage = navContainer;
我有两个视图,添加视图和编辑视图,两个视图不同 UI 但视图模型相同。通过使用 mvvm,我已将绑定上下文设置为两个视图作为相同的视图模型。我是新鲜 mvvm 的新手。在新的 mvvm 中,我不知道如何将相同的视图模型设置为两个视图。另一个是,我已经将参数传递给 viewmodel 构造函数,这在新的 mvvm 中是如何实现的。请提出您宝贵的建议。
通常情况下,伴随的视图会根据名称推断出来。但是对于这个用例,您应该明确提及要使用哪个视图。有一个方法,你应该可以像这样使用它:
// For adding
CoreMethods.PushPageModel<AddEditViewModel, AddView>();
// For editing
CoreMethods.PushPageModel<AddEditViewModel, EditView>();
当然,考虑到您仍然需要为PushPageModel
方法指定的实际参数。另外,我在这里假定了您的视图模型和视图的名称,但我希望它能说明问题。
对于那些有兴趣为您在应用程序中加载的第一个页面(例如启动画面)执行此操作的人,这可能会有所帮助 -
Page page;
if (Xamarin.Forms.Device.Idiom == TargetIdiom.Tablet)
{
page = FreshPageModelResolver.ResolvePageModel<SplashPageModel>();
}
else
{
// We will load our phone only splash screen
page = new SplashPagePhone();
FreshPageModelResolver.BindingPageModel(null, page, new SplashPageModel(FreshIOC.Container.Resolve<DataService>()));
}
var navContainer = new FreshMvvm.FreshNavigationContainer(page)
{
BarTextColor = Color.White
};
MainPage = navContainer;