Призма: Измените активное представление

У меня есть небольшой инструмент, подобный Windows Control Panel. Инструмент позволяет нам управлять пользователями, настраивать базы данных, управлять сценариями, и т.д. Домашняя страница представляет все sub категории приложения. Когда Вы нажимаете на ссылку, она загружает представление этой категории в правильной панели и небольшие левые телевикторины задачи, доступные для этой категории. Простой.

В основном то, что я хочу сделать, должно иметь "contextalized" строку состояния. Если Вы находитесь в представлении, где Вы должны быть соединены, строка состояния должна показать, что Вы заявляете. Если Вы находитесь в представлении, где информация должна быть отображена, я хочу его в своей строке состояния.

Я уже поместил a Region (названный StatusBarRegion для строки состояния в моей оболочке. Для каждого модуля я зарегистрировал StatusBarView этого модуля на регионе оболочки.

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

Но каждый раз я пытаюсь разрешить StatusBarRegion, это не может быть найдено в регионах менеджера региона.

Посмотрите,

var region = _regionManager.Regions[.RegionNames.StatusBarRegion];
region.Activate(_container.Resolve<StatusBarView>());

Регион является всегда пустым. Почему это?

Спасибо за внимание.

5
задан esylvestre 27 May 2010 в 16:13
поделиться

2 ответа

Причина, по которой регион был нулевым? Этот фрагмент кода использовался в методе Initialize модуля Module , поэтому пользовательский интерфейс еще не был создан.

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

0
ответ дан 14 December 2019 в 19:03
поделиться

Дважды проверьте значение RegionNames.StatusBarRegion , если оно уже совпадает с целевым регионом в вашей оболочке.

Если это так, то регион не должен быть нулевым, я думаю, за исключением того, что вы поместили свой дескриптор в модель представления / представления модуля и не получили диспетчер регионов и контейнер в конструкторе.

Допустим, это обработано в вашем представлении SilverlightUserControl1 . Конструктор может быть таким:

private readonly IRegionManager _regionManager;
private readonly IUnityContainer _container;

public SilverlightUserControl1(IRegionManager regionManager, IUnityContainer container)
{
    _regionManager = regionManager;
    _container = container;
}

private Button1_Click(object sender, RoutedEventArgs e)
{
    var statusBarView = _container.Resolve<StatusBarView>();
    statusBarRegion = _regionManager.Regions["StatusBarRegion"];

    statusBarRegion.Add(statusBarView, "StatusBarView");
    statusBarRegion.Activate(statusBarView);

    // or you could remove all views in `ActiveViews` and add the view then
    // (no need to activate)
}
1
ответ дан 14 December 2019 в 19:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: