Когда я создаю новое приложение Xamarin.Forms с использованием пакета шаблонов Prism, проект создается с MainPageViewModel
, который наследуется от ViewModelBase
Позже я создаю и дополнительную View и ViewModel, скажем, для ChatPage. ChatPageViewModel
наследуется от BindableBase
, а не ViewModelBase
, созданного в диалоговом окне Добавить новый.
Я хотел бы использовать ViewModelBase во всех моих представлениях (моделях) ViewModelBase наследуется от ViewModelBase : BindableBase, INavigationAware, IDestructible
Я пытаюсь изменить новый ChatPageViewModel : BindableBase
на ChatPageViewModel : ViewModelBase
, но конструктор получает красную волнистую ошибку;
Ошибка CS7036 Не указан аргумент, который соответствует необходимому формальному параметру 'navigationService' из 'ViewModelBase.ViewModelBase (INavigationService)'
Я вижу в App.xaml.cs, что containerRegistry.RegisterForNavigation<NavigationPage>();
реализован иначе, чем другие страницы containerRegistry.RegisterForNavigation<ChatPage, ChatPageViewModel>();
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterForNavigation<NavigationPage>();
containerRegistry.RegisterForNavigation<MainPage, MainPageViewModel>();
containerRegistry.RegisterForNavigation<SettingsPage, SettingsPageViewModel>();
containerRegistry.RegisterForNavigation<ChatPage, ChatPageViewModel>();
containerRegistry.RegisterSingleton<IXpdSettings, XpdSettings>();
containerRegistry.RegisterSingleton<IMqttDataService, MqttDataService>();
}
Есть ли способ, которым я могу наследовать от ViewModelBase? Может / должен ли он быть реализован в шаблонизме XamarinForms Prism?