Prism 4: Как скрыть элементы в ItemsControl? - PullRequest
0 голосов
/ 01 марта 2011

Я создаю демонстрационное приложение Prism 4 для изучения новой инфраструктуры, уделяя особое внимание переключению видов. Приложение имеет несколько областей, одна из которых - это ItemsControl, который содержит одну или несколько кнопок из текущего активного модуля.

Я регистрирую кнопки с помощью диспетчера регионов в методе Initilize() каждого модуля. Вот регистрационный код для первого модуля:

RegionManager.RegisterViewWithRegion("ButtonRegion", typeof(ModuleAButton1));
RegionManager.RegisterViewWithRegion("ButtonRegion", typeof(ModuleAButton2));

Второй модуль регистрирует свои кнопки таким же образом. Я использую RequestNavigate() для переключения между двумя модулями.

Вот моя проблема: кнопки из обоих модулей видны в ItemsControl, а не только кнопки из активного модуля. Я подумывал изменить ItemsControl на ContentControl и поместить кнопки в StackPanel, но по причинам, которые я не буду вам здесь утомлять, это не сработает для меня. Что мне нужно сделать, это либо:

  • Загрузите кнопки, когда модуль активирован, и выгрузите их, когда я переключаюсь на другой модуль, или

  • Показывать кнопки, когда модуль активирован, и скрывать их при переключении на другой модуль.

Как мне это сделать в Призме 4? Спасибо за вашу помощь.

1 Ответ

2 голосов
/ 01 марта 2011

Я нашел свой ответ.Реализуйте интерфейс IRegionMemberLifetime в представлении или его модели представления.Интерфейс состоит из одного логического свойства, доступного только для чтения, KeepAlive.Если для свойства установлено значение true, представление будет сохраняться после того, как пользователь уйдет от него.Если для свойства установлено значение false, представление будет выгружено.См. «Руководство разработчика по Microsoft Prism» (версия 4), стр.121.

...