查看退货系统对象

har*_*nis 0 navigation prism regions

在Prism 5中,在带有以下导航请求的mvvm应用程序中的Unity中,我获得了System.Object而不是视图。

 RegionManager.RequestNavigate(RegionNames.MainMenuRegion,
 new Uri("../../AdminModule/Views/MainMenuView", UriKind.Relative))
Run Code Online (Sandbox Code Playgroud)

导航请求位于“登录”模块中,而目标视图位于另一个模块中,该模块在引导程序中“按需”加载。AdminModule的初始化类仅包含一个简单的Initialize()。MainMenuView和MainMenuViewModel是基本的。我测试了它们,它们工作正常T

在这一点上,我试图将其简化,并让导航请求创建MainMenuView并进行必要的注册,以使我知道该视图的哪个实例为目标。

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

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

   view = container.Resolve<MainMenuView>();

   RegionManager.Regions[(RegionNames.MainMenuRegion)].Add(view, "MainMenuView");
Run Code Online (Sandbox Code Playgroud)

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

Jam*_*cas 5

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

例如

container.RegisterType<Object, MainMenuView>("MainMenuView");
Run Code Online (Sandbox Code Playgroud)