WPF - Prism - активация и деактивация представлений в области ContentControl

В моем приложении мне нужно видеть только одно представление за раз, поэтому я использую ContentControl в своей оболочке. Проблема в том, что если у меня есть одно видимое представление (скажем, View1) и я активирую View2, до этого момента все в порядке. Теперь пользователь нажимает кнопку «Закрыть» на View2, после чего пользователи заканчивают тем, что теперь смотрят на пустой экран, поскольку сейчас нет активных представлений. Я предполагаю, что адаптер региона деактивирует текущий активный вид перед активацией следующего вида.

Как я могу гарантировать, что ранее активный вид снова стал активированным (View1 в моем примере)? Нужен ли мне регион другого типа для достижения этой функции?

Заранее спасибо,

Али


person Ali    schedule 07.10.2009    source источник


Ответы (1)


К сожалению (как вы выяснили) это не поведение. Вам нужно будет отслеживать свои просмотры и самостоятельно активировать предыдущий.

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

Вот исходный код поведения ActiveAware. Я почти уверен, что вы можете использовать эту модель в качестве отправной точки для поведения, которое будет делать то, что вы хотите. http://compositewpf.codeplex.com/SourceControl/changeset/view/26112#496678

person Anderson Imes    schedule 07.10.2009
comment
Вот как я сейчас это делаю. Как вы думаете, подойдет ли для чего-то вроде этого адаптер / поведение настраиваемого региона? - person Jeremiah Morrill; 08.10.2009
comment
Хорошее предложение. Я опубликую кое-что, что может стать хорошей отправной точкой. Я думаю, что поведение ActiveAware очень близко по логике. - person Anderson Imes; 08.10.2009
comment
Иеремия, какой метод вы используете, чтобы отследить это прямо сейчас? В частности, как вы обрабатываете представления, существующие в других модулях? Если одно представление в Module1 деактивировано, предыдущее может существовать в Module2. Агрегирование событий или какой-то сервис? В конечном итоге, кто управляет списком просмотров? Спасибо за ваши предложения, я также проверю идею Андерсона. - person Ali; 09.10.2009