如何将相同的viewmodel设置为xamarin表单中的新mvvm中的两个视图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将相同的viewmodel设置为xamarin表单中的新mvvm中的两个视图相关的知识,希望对你有一定的参考价值。

我有两个视图添加和编辑视图两个视图是不同的UI但相同的viewmodel。通过使用mvvm,我将两个视图的绑定上下文设置为相同的viewmodel。我是新手mvvm的新手。在新的mvvm中,我不知道如何将相同的viewmodel设置为两个视图。另一个是,我将参数传递给viewmodel构造函数,在新的mvvm中它是如何实现的。请提出宝贵的建议。

Exception thrown in root level page

答案

通常,附带的视图将由名称推断。但对于此用例,您应明确提及要使用的视图。有一种方法,您应该能够像这样使用它:

// For adding
CoreMethods.PushPageModel<AddEditViewModel, AddView>();

// For editing
CoreMethods.PushPageModel<AddEditViewModel, EditView>();

当然,考虑到您仍需要为PushPageModel方法指定的实际参数。此外,我在这里假设了您的视图模型和视图的名称,但我希望它能够解决问题。

另一答案

对于那些对您在应用中加载的第一页感兴趣的人,例如Splash屏幕,这可能会有所帮助 -

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;

以上是关于如何将相同的viewmodel设置为xamarin表单中的新mvvm中的两个视图的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Xamarin 和 Autofac 将构造函数依赖项注入 ViewModel?

如何绑定到CarouselView(Xamarin.Forms)(MVVM)内部的ViewModel元素?

Xamarin.Forms 无法通过 ViewModel 将 ObservableCollection 绑定到 CollectionList

如何使用 Xamarin.Forms.DependencyService 注入具有构造函数注入的 ViewModel

Xamarin 表单从 listview 绑定到 viewmodel

如何在 Xamarin Forms 的可重用 ViewCell 中绑定命令?