在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");
知道我做错了什么吗?谢谢。
答案 0 :(得分:4)
听起来好像没有注册视图。所有视图都根据字符串键注册为类型对象。如果找不到密钥,Unity将只返回一个新对象。因此,在您的模块(IModule实现)中,请确保使用容器注册视图。
e.g。
container.RegisterType<Object, MainMenuView>("MainMenuView");