如何改变棱镜的观点?

时间:2011-12-03 02:22:29

标签: prism

刚刚开始施行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);

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我不确定你使用的是什么容器,但是使用MEF你必须要么:

一个。在引导程序中使用容器注册库

OR

湾创建单独的项目作为PRISM模块并将其添加到目录。然后PRISM将自动导入该库

现在,这将解决您的问题。

但如果没有 - 你需要陷阱导航错误。 RequestNavigate吞下异常并查看它们,您需要订阅它,如下所示: http://blogs.southworks.net/gmaliandi/2011/08/how-to-prevent-region-navigation-from-hiding-exceptions-in-prism/