Скрытие области призмы при использовании навигации на основе вида - PullRequest
0 голосов
/ 31 марта 2020
<DockPanel LastChildFill="True">
    <UserControl prism:RegionManager.RegionName="{x:Static inf:RegionNames.ShellHeaderRegion}" DockPanel.Dock="Top" />
    <UserControl prism:RegionManager.RegionName="{x:Static inf:RegionNames.ShellStatusRegion}" DockPanel.Dock="Bottom" />
    <UserControl prism:RegionManager.RegionName="{x:Static inf:RegionNames.ShellContentRegion}"/>
</DockPanel>

Привет,

Я создаю приложение WPF Prism с несколькими модулями. Некоторые модули используют все 3 области, которые я определил. (Заголовок, Содержимое, Статус). Другие модули используют только область контента. Проблема в том, что при переходе от одного модуля к другому с использованием IRegionManager.RequestNavigate() ShellHeaderRegion и ShellContentRegion по-прежнему содержат внедренные представления. Я хотел бы иметь возможность деактивировать эти представления, сохраняя при этом возможность повторно активировать эти представления, когда я звоню IRegionNavigationJournal.GoBack(). Есть ли правильный способ сделать это?

1 Ответ

0 голосов
/ 06 апреля 2020

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

К сожалению, единственный способ вызвать IRegionNavigationJournal.GoBack() будет с IRegion, так как реализация INavigationAware на пустом UserControl действительно не поможет (если вы не добавите элементы пользовательского интерфейса или события, которые могут вызывать IRegionNavigationJournal.GoBack())

enter image description here

...