我使用Visual Studio for Mac的Prism Template Pack生成一个新项目(尝试共享和pcl),然后更新到7.0.0.340-ci。是否按照惯例注册视图模型?
当我尝试运行此应用时,会抛出此异常:Objective-C exception thrown. Name: NSInternalInconsistencyException Reason: Application windows are expected to have a root view controller at the end of application launch.
以下是主应用的代码。
public partial class App : PrismApplication
{
public App(IPlatformInitializer initializer = null) : base(initializer) { }
protected override void OnInitialized()
{
InitializeComponent();
NavigationService.NavigateAsync("MainPage?title=Hello%20from%20Xamarin.Forms");
}
protected override void RegisterTypes(Prism.Ioc.IContainerRegistry containerRegistry)
{
Prism.Mvvm.ViewModelLocationProvider.Register<MainPage,MainPageViewModel>();
}
//protected override void RegisterTypes()
//{
// Container.RegisterTypeForNavigation<MainPage>();
//}
}
由于签名不兼容,我不得不注释掉底线并重做覆盖。
Container.RegisterTypeForNavigation去了哪里或它的替代品是什么?
我也尝试过在RegisterTypes方法中没有任何代码。
在探索NavigationService属性的调试会话中,MainPage为null。
答案 0 :(得分:0)
RegisterTypes方法应如下所示。 在棱镜表单7.x中,用于导航的页面必须通过RegisterForNavigation <>()或RegisterForNavigation()进行注册。
protected override void RegisterTypes(Prism.Ioc.IContainerRegistry containerRegistry)
{
containerRegistry.RegisterForNavigation<MainPage,MainPageViewModel>();
}