Как установить одну и ту же viewmodel для двух представлений в новом mvvm в формах xamarin

2

У меня есть два представления Add и Edit view, оба представления имеют различный пользовательский интерфейс, но одну и ту же модель представления. Используя mvvm, я установил связывающий контекст для обоих представлений как одну и ту же модель представления. Я новичок в свежем mvvm. В свежем mvvm я не знаю, как установить одну и ту же модель представления для двух представлений. Другой, я передаю параметр конструктору viewmodel, как это возможно в свежем mvvm. Пожалуйста, дайте ваше ценное предложение.

Изображение 174551

Теги:
xamarin.forms
freshmvvm

2 ответа

2
Лучший ответ

Обычно сопровождающее представление будет выводиться по именам. Но для этого варианта использования вы должны явно указать, какое представление использовать. Для этого есть метод, вы должны использовать его следующим образом:

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

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

Конечно, принимая во внимание фактические параметры, которые вам еще нужно указать для метода PushPageModel. Кроме того, я принял названия вашей модели представления и представлений здесь, но я надеюсь, что это поможет понять.

  • 0
    Пожалуйста, укажите сборку «CoreMethods». CoreMethods не поддерживается.
  • 0
    CoreMethods является частью FreshMvvm. Все ваши модели представлений должны наследоваться от FreshBasePageModel и вы переходите на разные страницы, используя CoreMethods.PushPageModel<YourViewModel>() вместо ссылки на реальные страницы, потому что это нарушит шаблон MVVM.
Показать ещё 7 комментариев
0

Для тех, кто заинтересован в этом для первой страницы, которую вы загружаете в свое приложение, например, заставки, это может помочь -

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;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню