【发布时间】:2018-04-08 09:00:28
【问题描述】:
我正在开发一个使用 Prism 框架的应用程序。我在引导程序中注册了视图模型,如下所示:
ViewModelLocationProvider.Register<LoginControl, LoginViewModel>();
ViewModelLocationProvider.Register<MainWindow, MainWindowViewModel>();
ViewModelLocationProvider.Register<CountryList, CountryViewModel>();
我还为导航注册了棱镜:
builder.RegisterTypeForNavigation<LoginControl>();
builder.RegisterTypeForNavigation<MainWindow>();
builder.RegisterTypeForNavigation<CountryList>();
它工作完美,但我发现每个视图模型的构造函数在第一次导航到 ViewModel 时被调用一次。在提供相同的视图模型对象之后。但我希望在导航之后,viewmodel 也应该处理并且每次都提供新对象。
我想实现一些类似于autofac的:
builder.RegisterType<ModuleLoader>().InstancePerDependency()
但我在ViewModelLocationProvider 中没有找到任何方法来实现这一点。有什么方法可以实现吗?
更新
发现当我从一个视图导航到另一个视图时,该视图也没有被释放。我们移动到相同的视图(区域中的用户控件),然后提供相同的对象,这是 ViewModel 相同实例的真正原因。在 Prism 中导航后有什么方法可以处理视图?
【问题讨论】:
标签: c# wpf mvvm prism mvvm-light