Используя Prism, как мне зарегистрировать свой пользовательский элемент управления в загрузочном устройстве Unity? - PullRequest
1 голос
/ 21 июля 2010

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

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

Спасибо.

1 Ответ

1 голос
/ 21 сентября 2010

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

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

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

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

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

Спасибо, Damian

...