Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: Deepak SharmaОтветов: 2

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

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

viewwpfprismpopup

Ответы

Ответ 1 · рейтинг 2 · Damian Schenkelman

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

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

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

Ответ 2 · рейтинг 1 · Robert Reid

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

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

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

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

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы