我在我的新项目中使用 WPF4 和 PRISM4。
有一个模块,其中有多个视图。 DI 是统一完成的。当我第一次从 ViewA 导航到 ViewB 时,将创建 ViewB 并调用其构造函数。但是,当我尝试第二次、第三次导航到 ViewB 时,不会创建 ViewB,但会重用现有实例。
我在用着IRegionManager.RequestNavigate出于我的导航目的。
我尝试过通过瞬态生命周期管理器 to 寄存器类型统一方法,但没有效果。
有没有办法配置棱镜和/或统一以在每次导航到它时创建一个新视图?
Thanks.
正确的方法是实施INavigationAware
在您的视图或视图模型中(Prism 将首先检查视图,如果它没有实现INavigationAware
它还会检查 ViewModel)。
您特别感兴趣的是IsNavigationTarget
方法,它告诉 Prism 是否应重用当前视图实例,或者是否应创建另一个实例来满足导航请求。因此,要始终创建一个新视图,您需要执行以下操作:
public class MyViewModel : INavigationAware {
bool INavigationAware.IsNavigationTarget(NavigationContext navigationContext)
{
return false;
}
void INavigationAware.OnNavigatedFrom(NavigationContext navigationContext)
{
}
void INavigationAware.OnNavigatedTo(NavigationContext navigationContext)
{
}
}
所有这些都在 Prism 4 文档的第 8 章中有更详细的解释;他们还有其工作原理的图示 http://msdn.microsoft.com/en-us/library/gg430861%28v=pandp.40%29.aspx#TheRegionNavigationSequence,这非常好,因为它还可以让您确切地知道可以在哪里连接以及如何连接。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)