Как с помощью Prism зарегистрировать свой пользовательский элемент управления в загрузочной программе Unity?

Я использую Prism (Composite Application Framework) для создания приложения. Я создал свою оболочку, и в ней есть три области (Главное, меню, коммутатор). Я хотел бы загрузить свою область коммутатора в оболочку с помощью пользовательского элемента управления коммутатором, но в этом случае я не хочу загружать его через модуль.

Итак, как мне зарегистрировать свое представление (пользовательский элемент управления коммутатором) с областью коммутатора моей оболочки внутри загрузочного ремня. Может быть, можно только создать модуль специально для управления коммутатором, но это кажется пустой тратой времени. Я пытался это сделать, но в конечном итоге не могу получить доступ к RegionManager через мой производный класс UnityBootStrapper.

Спасибо.


person Community    schedule 20.07.2010    source источник


Ответы (1)


Не зная весь сценарий, возможно, нет необходимости добавлять UserControl коммутатора в регион. Это связано с тем, что если ваш сценарий требует, чтобы вы добавили его в проект оболочки, вам могут не понадобиться возможности расширяемости и композиции пользовательского интерфейса, предоставляемые регионами.

Предполагая, что элемент управления SwitchBoard с использованием находится в ContentControl, вы можете просто разместить его там изнутри конструктора оболочки, без необходимости определять регион. С другой стороны, если пользовательский элемент управления SwitchBoard помещен в Selector или ItemsControl, вы можете определить регион и добавить его в качестве одного из его дочерних элементов. Вы по-прежнему сможете добавлять новые представления в эти регионы, а элемент управления SwitchBoard всегда будет находиться в командной консоли.

Тем не менее, предполагая, что RegionManager был зарегистрирован в контейнере, вы можете сделать что-то вроде этого для доступа к RM в загрузчике: (псевдокод):

public class MyBootstrapper : UnityBootstrapper
{
    MyMethod()
    {
        IRegionManager manager = this.Container.Resolve<IRegionManager>();
    }
}

Надеюсь, это поможет.

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

person Damian Schenkelman    schedule 20.09.2010
comment
Я согласен. При чтении этого вопроса я первой подумал: «Зачем вообще нужно размещать управление коммутатором в каком-либо регионе?» - person lecrank; 26.02.2012