Prism的ViewModelLocator.AutoWireViewModel总是创建一个新实例

时间:2014-09-01 09:50:21

标签: ninject prism

我们正在尝试使用当前的IoC提供商Ninject将一个普通的旧ViewModel与DataTemplates项目一起转换为Prism世界。

我已经创建了IServiceLocater和Bootstrapper的实现。使用区域导航和注册视图可以正常工作。另外ViewModelLocator.AutoWireViewModel设置了我们的ViewModel。我面临的问题是,即使我将IRegionMemberLifetime.KeepAlive设置为true,并在查询IsNavigationAware.IsNavigationTarget时返回true,但视图模型永远不会被重用。只需浏览日志就会导致Prism解析ViewModel的新实例。有没有人有如何正确使用Ninject与Prism的参考实现,还是我应该放弃并切换到Unity?

1 个答案:

答案 0 :(得分:1)

考虑导航的视图和ViewModel需要具有与导航Uri的基本名称相同的短或长类名。

对我来说错误的是我将StartView链接到名称“Start”。这意味着IRegion历史记录中的StartView不被视为导航目标“开始”的导航目标。