2013-09-24 4 views
2

У меня есть приложение и модули Wpf Prism. Я хочу создать много окон, которые были заполнены одним и тем же модулем. Но я принимаю эту ошибку:Показать тот же модуль более одного раза

Исключение произошло при создании региона с именем «PriceWindowRegion». Исключение: System.ArgumentException: регион с данным именем уже зарегистрирован

Как я могу решить эту проблему?

Спасибо,

+2

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

+0

Вы должны добавить хотя бы код ошибки. –

ответ

3

Вы должны использовать контекстную область в ваших окнах, как все они имеют один и те же IRegionManager. Кроме того, убедитесь, что ваш пользовательский элемент управления имеет свой атрибут PartCreationPolicy, установленный на NonShared.

MSDN предоставляет документацию о том, как создать несколько экземпляров одного и того же региона http://msdn.microsoft.com/en-us/library/ff921098%28v=pandp.40%29.aspx#sec42

регионы с заданной областью доступны только с впрыском зрения. Вы должны использовать , если вам нужен вид, чтобы иметь свой собственный экземпляр области. Представления , которые определяют области с прикрепленными свойствами, автоматически наследуют их региональный менеджер. Обычно это глобальный 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, что представление может сохранить [так в оригинале] для дальнейшего доступа к локальной области видимости.

Смежные вопросы