刚刚开始施行Prism。谁能解释我在这里做错了什么......
我基本上有两个地区。 1个区域 - 左侧菜单。 2地区 - 内容。他们都在壳里。
左侧菜单视图和内容视图都在单独的项目中 现在,我想在左侧菜单中点击一些按钮,切换内容区域中的视图。
我做了什么: - 创建的NavigationCommand +将它添加到复合命令(现在不相关)
public LeftMenuViewModel(IRegionManager regionManager)
{
_regionManager = regionManager;
NavigateCommand = new DelegateCommand<object>(Navigate);
AppCommands.NavigateCommand.RegisterCommand(NavigateCommand);
}
+
public void Navigate (object navigatePath)
{
if (navigatePath !=null)
{
_regionManager.RequestNavigate(RegionNames.ContentRegion, navigatePath.ToString());
}
}
在我的左侧视图中我有下一段代码:
dc:ButtonDropDown标头=“输入新客户端” Style =“{DynamicResource AppMenuCommandButton}” Command =“{x:Static Infrastracture:AppCommands.NavigateCommand}” CommandParameter = “ClientNewView”
现在,命令工作并点击LeftMenuViewModel中的Navigate方法,它只是拒绝将内容视图(来自不同项目)加载到Content Region中,而只是在内容区域中提供'System.Object'。
我认为问题出在这行代码中:
_regionManager.RequestNavigate(RegionNames.ContentRegion, navigatePath.ToString());
我们不能只从不同的项目中加载视图吗?
我是否必须在内容视图项目中向容器注册视图?像这样:
_container.RegisterType<object, ClientNewView>(typeof (ClientNewView).FullName);
?
感谢您的帮助!
答案 0 :(得分:0)
我不确定你使用的是什么容器,但是使用MEF你必须要么:
一个。在引导程序中使用容器注册库
OR
湾创建单独的项目作为PRISM模块并将其添加到目录。然后PRISM将自动导入该库
现在,这将解决您的问题。
但如果没有 - 你需要陷阱导航错误。 RequestNavigate
吞下异常并查看它们,您需要订阅它,如下所示:
http://blogs.southworks.net/gmaliandi/2011/08/how-to-prevent-region-navigation-from-hiding-exceptions-in-prism/