ПРИЗМА - Повторное использование взглядов с детскими регионами - можно ли это сделать? - PullRequest
4 голосов
/ 27 января 2011

Я новичок в PRISM, но я прочитал справочную документацию и, похоже, не могу понять, как добиться следующего (это приложение WPF)

У меня есть Shell (Окно), в котором есть 2 региона с именами 'region1' и 'region2'. в методе Initialize моего единственного модуля я регистрирую одно и то же представление для каждого региона:

regionViewRegistry.RegisterViewWithRegion("Region1", typeof(View1));
regionViewRegistry.RegisterViewWithRegion("Region2", typeof(View1));

и когда я запускаю его, все в порядке, поскольку он создает 2 отдельных экземпляра View1 и размещает по одному в каждом регионе.

Теперь в View1 я объявил свой собственный регион для внедрения маленьких дочерних представлений

<ItemsControl Name="MainRegion" cal:RegionManager.RegionName="MainRegion" />

Теперь, когда я запускаю свое очень простое приложение PRISM, я получаю следующее сообщение об исключении:

"Регион с указанным именем уже зарегистрировано: MainRegion "

, что означает, что я не могу иметь несколько экземпляров одного и того же представления, если это представление объявляет свои собственные регионы.

Это правильно?

кажется огромным ограничением.

Я хочу, чтобы мое приложение было высоко модульным, и чтобы представление составляло другие представления (через регионы) и т. Д.

Или я неправильно прочитал документацию?

1 Ответ

6 голосов
/ 28 января 2011

Вы можете создать разделение областей уровня оболочки с областями, созданными представлениями модулей, используя RegionScope. Любой регион, который вы создаете без области, является «глобальным», и наличие двух областей с одинаковым именем в одной и той же области не поддерживается.

Подробнее об областях действия региона читайте в этой статье MSDN: http://msdn.microsoft.com/en-us/magazine/cc785479.aspx#id0090126

...