Как заставить Prism RegionManager добавить два представления вместо одного - PullRequest
0 голосов
/ 10 марта 2009

Я использую Руководство по составным приложениям (версия 2, февраль 2009 г.).

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

Однако в регионе отображается только последний вид, добавленный в RegionManager.

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

namespace EmployeeModule
{
    public class EmployeeModule : IModule
    {
        private readonly IRegionManager _regionManager;

        public EmployeeModule(IRegionManager regionManager)
        {
            _regionManager = regionManager;
        }

        public void Initialize()
        {
            _regionManager.RegisterViewWithRegion(Infrastructure.RegionNames.MainRegion, typeof(Views.EmployeesView.EmployeesView));
            _regionManager.RegisterViewWithRegion(Infrastructure.RegionNames.MainRegion, typeof(Views.EmployeesListView.EmployeesListView));
        }
    }
}

Ответы [ 2 ]

3 голосов
/ 10 марта 2009

Ну, я не уверен, что ваше решение не совсем правильно; это определенно некрасиво Я считаю, что проблема, с которой вы сталкиваетесь, заключается в том, что вы помечаете сетку или холст как область. Это нормально, но в этих случаях элементы будут скрываться, если только вы не сможете указать смещения X и Y для Canvas или Column / Row для Grid.

Prism предоставляет три типа адаптеров для регионов. См. MSDN .

  1. ContentControlRegionAdapter. Этот адаптер адаптирует элементы управления типа System.Windows.Controls.ContentControl и производные классы.
  2. SelectorRegionAdapter. Этот адаптер адаптирует элементы управления, производные от класса System.Windows.Controls.Primitives.Selector, например, элемент управления System.Windows.Controls.TabControl.
  3. ItemsControlRegionAdapter. Этот адаптер адаптирует элементы управления типа System.Windows.Controls.ItemsControl и производных классов.

Это означает, что вы можете использовать области поверх любого ContentControl (элементы управления, отображающие один элемент Content), селекторы, отображающие несколько элементов содержимого и имеющие концепцию выбранного элемента, и ItemsControl, который является просто элементом управления. который отображает несколько объектов.

Я полагаю, что решением вашей проблемы является использование ItemsControl, который автоматически изменит свой размер для отображения всех ваших просмотров.

0 голосов
/ 10 марта 2009

Позвольте мне ответить на мой собственный вопрос:

Приведенный выше код RegionManager работает нормально.

Необходимо удалить свойства width и height элемента UserControl в ваших представлениях, в противном случае они перекрывают друг друга.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...