我有 Wpf Prism 应用程序和模块。我想创建许多由同一模块填充的窗口。但我正在接受这个错误:
创建名为“PriceWindowRegion”的区域时发生异常。例外是:System.ArgumentException:具有给定名称的区域已注册
我怎么解决这个问题?
谢谢,
您需要在您的窗口中使用一个作用域区域,因为它们都共享相同的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 [原文如此],以便进一步访问本地范围。