WPF Prism - динамическая загрузка представления во всплывающем окне

У нас есть решение для нескольких проектов на основе MS Prism в WPF. Для простоты понимания возьмем оболочку проекта и пользовательское управление проектом. Проект usercontrol имеет множество представлений для различных функций. У нас есть всплывающее окно в проекте оболочки, которое вызывается из главного окна оболочки, я хочу загрузить другое представление в диспетчер областей всплывающих окон в зависимости от требований. Любая помощь / предложение через объяснение потока или некоторые примеры кода будут очень заметны.

С уважением


person Deepak Sharma    schedule 30.01.2010    source источник
comment
Можете ли вы уточнить на основе требований. Показать зарегистрированное представление в другом представлении просто с использованием регионов, однако я чувствую, что комментарий, основанный на требованиях, может немного усложнить ситуацию.   -  person Anderson Imes    schedule 01.02.2010
comment
на основе требований - ›у нас есть одно главное окно оболочки и другое окно, которое мы собираемся использовать в качестве всплывающего окна (например, для фильтрации сетки или для выбора / вставки данных из параметра в сетке). в этом всплывающем окне определена область, мы хотим отображать / загружать разные представления в регионе в зависимости от требований :) т.е. в соответствии с требуемой опцией   -  person Deepak Sharma    schedule 03.02.2010


Ответы (2)


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

Пожалуйста, дайте мне знать, если это поможет.

Спасибо, Дамиан

person Damian Schenkelman    schedule 20.09.2010

Использование контейнера внедрения зависимостей (например, Unity, который также можно получить из CompositeWPF страница Microsoft), вы будете возможность передавать экземпляр IRegionManager вашим различным модулям / всплывающим окнам ...

Например, в представлении, в которое вы хотите внедрить другое представление, у вас может быть именованный ItemsControl:

<ItemsControl cal:RegionManager.RegionName="Modules" />

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

_regionManager.Regions["Modules"].Add(view);

(Где _regionManager может быть переменной экземпляра, заполненной посредством внедрения зависимостей в конструктор класса, в котором она находится). Не беспокойтесь о регистрации IRegionManager интерфейса в контейнере, это делает UnityBootstrapper во время настройки.

person Robert Reid    schedule 10.02.2010