У нас есть решение для нескольких проектов на основе MS Prism в WPF. Для простоты понимания возьмем оболочку проекта и пользовательское управление проектом. Проект usercontrol имеет множество представлений для различных функций. У нас есть всплывающее окно в проекте оболочки, которое вызывается из главного окна оболочки, я хочу загрузить другое представление в диспетчер областей всплывающих окон в зависимости от требований. Любая помощь / предложение через объяснение потока или некоторые примеры кода будут очень заметны.
С уважением
Вопрос
WPF Prism - динамическая загрузка представления во всплывающем окне
- Можете ли вы уточнить на основе требований. Показать зарегистрированное представление в другом представлении просто с использованием регионов, однако я чувствую, что комментарий, основанный на требованиях, может немного усложнить ситуацию. Anderson Imes 01.02.2010
- на основе требований - ›у нас есть одно главное окно оболочки и другое окно, которое мы собираемся использовать в качестве всплывающего окна (например, для фильтрации сетки или для выбора / вставки данных из параметра в сетке). в этом всплывающем окне определена область, мы хотим отображать / загружать разные представления в регионе в зависимости от требований :) т.е. в соответствии с требуемой опцией Deepak Sharma 03.02.2010
Ответы
Ответ 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.
Похожие материалы
- Как сохранить и прочитать CGLayerRef в NSmutableArray
- Нажмите Слушатели для перекрывающихся представлений
- UICollectionView встраивает видео на YouTube по-прежнему воспроизводится в другом представлении
- Подождите, пока все анимации WPF остановятся.
- .NET делает копию встроенного файлового ресурса на локальный диск
- Привязка данных wpf c# к объекту