2013-09-24 40 views
2

我有Wpf Prism应用程序和模块。我想创建很多已经由同一个模块填充的窗口。但我正在参考此错误:多次显示相同的模块

创建名称为'PriceWindowRegion'的区域时发生异常。例外是:System.ArgumentException:给定名称的区域已经注册

我该如何解决这个问题?

感谢,

+2

http://stackoverflow.com/a/4822006/181771 – DaveDev

+0

您应该至少添加发生错误的代码。 –

回答

3

您需要使用范围的区域在您的Windows,因为他们都有着相同的IRegionManager。此外,请确保您的用户控件的PartCreationPolicy属性设置为NonShared

MSDN给出文档如何创建的相同区域的多个实例 http://msdn.microsoft.com/en-us/library/ff921098%28v=pandp.40%29.aspx#sec42

作用域区域是仅适用于注射视图。如果您需要视图以拥有自己的区域实例,则应使用 。定义具有附加属性的区域的视图 会自动继承其父级的RegionManager,它们将自动继承 。通常,这是在shell窗口中注册的全局 RegionManager。如果 应用程序创建该视图的多个实例,则每个实例 都会尝试向其父区域管理器注册其区域。 RegionManager只允许唯一命名的区域;因此,第二次注册会产生错误。

Scoped Regions

IRegion detailsRegion = this.regionManager.Regions["DetailsRegion"]; 
View view = new View(); 
bool createRegionManagerScope = true; 
IRegionManager detailsRegionManager = detailsRegion.Add(view, null, 
          createRegionManagerScope); 

Add方法将返回新RegionManager该视图可以 保留[原文如此]为进一步访问本地范围。

相关问题