视图返回系统对象

时间:2015-05-12 18:49:41

标签: navigation prism regions

在Prism 5,Unity,在一个mvvm应用程序中,使用以下导航请求,我得到System.Object而不是视图。

 RegionManager.RequestNavigate(RegionNames.MainMenuRegion,
 new Uri("../../AdminModule/Views/MainMenuView", UriKind.Relative))

导航请求位于Login模块中,目标视图位于bootstrapper中“按需”加载的另一个模块中。 AdminModule的初始化类只包含一个简单的Initialize()。 MainMenuView和MainMenuViewModel是基本的。我测试了它们并且它们工作o.k. Ť

我现在试图保持简单,让导航请求创建MainMenuView并进行任何必要的注册,以便我知道视图的哪个实例正在被定位。

我将以下代码添加到LoginViewModel,最后在MainMenuRegion的视图列表中有两个AdminModule.Views.MainMenuView实例,一个是类型对象,另一个是AdminModule.Views类型.MainMenuView。调用AdminModule.Views.MainMenuView构造函数的唯一时间是在container.resolve语句上。

container.RegisterType<MainMenuView, MainMenuView>("MainMenuView"); 

   view = container.Resolve<MainMenuView>();

   RegionManager.Regions[(RegionNames.MainMenuRegion)].Add(view, "MainMenuView");

知道我做错了什么吗?谢谢。

1 个答案:

答案 0 :(得分:4)

听起来好像没有注册视图。所有视图都根据字符串键注册为类型对象。如果找不到密钥,Unity将只返回一个新对象。因此,在您的模块(IModule实现)中,请确保使用容器注册视图。

e.g。

container.RegisterType<Object, MainMenuView>("MainMenuView");