我正在开发 WPF/Prism 4/AvalonDoc 应用程序。
我的一个观点非常复杂,ViewModel 变得庞大且难以管理。所以我决定用它们自己的 ViewModel 将它拆分成更小的 View 。
我在 View 上放置了一个区域,并使用“主”ViewModel 构造函数中的 regionManager.RegisterViewWithRegion 方法将 subview 加载到该区域。
当只加载 View 的一个实例时,这会像预期的那样工作。但是当我打开该屏幕的第二个实例时(它作为 DocumentContent 加载到 AvalonDock 的 DocumentPane 中)我收到“ View 已存在于区域中”错误。
如果可能的话,我想避免给该区域一些唯一的名称。 有没有办法表明我正在向“主” View 的特定实例添加 subview ? 关于如何做到这一点的任何建议?
最佳答案
如果您使用的是 MEF 并且您的 View 是单例的,即
[PartCreationPolicy(CreationPolicy.Shared)]
并且您的 INavigationAware
在
public override bool IsNavigationTarget(NavigationContext navigationContext)
{返回假;}
你会得到这个错误。
将 [PartCreationPolicy(CreationPolicy.Shared)]
更改为 [PartCreationPolicy(CreationPolicy.NonShared)]
你就完成了。
关于c# - 复合 View - View 已存在于区域错误中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7918538/