2

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

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

我怎么解决这个问题?

谢谢,

4

1 回答 1

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 [原文如此],以便进一步访问本地范围。

于 2013-09-24T07:52:30.510 回答