我有Wpf Prism应用程序和模块。我想创建许多由同一模块填充的窗口。但我接受了这个错误:
创建名为“PriceWindowRegion”的区域时发生异常。例外情况是:System.ArgumentException:具有给定名称的区域已经注册
我该如何解决这个问题?
谢谢,
答案 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只允许唯一命名的区域;因此, 第二次注册会产生错误。
IRegion detailsRegion = this.regionManager.Regions["DetailsRegion"];
View view = new View();
bool createRegionManagerScope = true;
IRegionManager detailsRegionManager = detailsRegion.Add(view, null,
createRegionManagerScope);
Add方法将返回视图可以使用的新RegionManager 保留[sic]以进一步访问本地范围。