关于WPF中棱镜导航的一些问题

时间:2013-04-15 19:18:41

标签: prism

我认为如果您将IoC容器的视图注册为“Singleton”,则每次导航时都会重复使用相同的实例,而将视图注册为“Transient”会在每次导航时创建一个新实例它。除非我做错了,否则我发现IoC“生活方式”没有任何区别,而IRegionMemberLifetime.KeepAlive属性决定了每次重复使用或重新创建视图。它是否正确? (我正在使用Castle Windsor IoC。)

当Prism文档谈到视图被“停用”时,这只是在导航时隐藏视图的过程吗?如果KeepAlive=False,视图是否会在此时处理?

嵌套视图/区域怎么样?如果视图包含其中包含另一个视图的区域,并且我离开父视图,那么两个视图是否都被取消激活/销毁(取决于KeepAlive的值)?怎么样ClearChildViewsRegionBehavior - 这适合哪些事情?

1 个答案:

答案 0 :(得分:0)

我不知道这是否适用于您的情况,但我实现了接口INavigationAware 如果应该为每个导航重用一个视图,我总是从IsNavigationTarget方法返回true。

public bool IsNavigationTarget(NavigationContext navigationContext)
{
    return true;
}