不止一次显示相同的模块

时间:2013-09-24 07:47:22

标签: c# wpf mvvm prism

我有Wpf Prism应用程序和模块。我想创建许多由同一模块填充的窗口。但我接受了这个错误:

  

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

我该如何解决这个问题?

谢谢,

1 个答案:

答案 0 :(得分:4)

您需要在窗口中使用范围区域,因为它们共享相同的IRegionManager。此外,请确保您的用户控件的PartCreationPolicy属性设置为NonShared

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

  

只有视图注入才能使用范围区域。你应该用   如果你需要一个视图来拥有自己的区域实例。查看   定义具有附加属性的区域会自动继承   他们父母的RegionManager。通常,这是全球性的   在shell窗口中注册的RegionManager。如果   应用程序创建该视图的多个实例,每个实例   将尝试使用父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   保留[sic]以进一步访问本地范围。