我认为如果您将IoC容器的视图注册为“Singleton”,则每次导航时都会重复使用相同的实例,而将视图注册为“Transient”会在每次导航时创建一个新实例它。除非我做错了,否则我发现IoC“生活方式”没有任何区别,而IRegionMemberLifetime.KeepAlive
属性决定了每次重复使用或重新创建视图。它是否正确? (我正在使用Castle Windsor IoC。)
当Prism文档谈到视图被“停用”时,这只是在导航时隐藏视图的过程吗?如果KeepAlive=False
,视图是否会在此时处理?
嵌套视图/区域怎么样?如果视图包含其中包含另一个视图的区域,并且我离开父视图,那么两个视图是否都被取消激活/销毁(取决于KeepAlive
的值)?怎么样ClearChildViewsRegionBehavior
- 这适合哪些事情?
答案 0 :(得分:0)
我不知道这是否适用于您的情况,但我实现了接口INavigationAware 如果应该为每个导航重用一个视图,我总是从IsNavigationTarget方法返回true。
public bool IsNavigationTarget(NavigationContext navigationContext)
{
return true;
}