Prism RequestNavigate - PullRequest
       5

Prism RequestNavigate

0 голосов
/ 27 февраля 2012

В моем главном окне у меня есть элемент управления вкладками, мне нужно уведомить разные модули, что разные вкладки были активированы или закрыты. Элемент управления вкладками SelectedItem привязан к ActiveView в моей модели представления

<TabControl Padding="0"  SelectedItem="{Binding ActiveView}"
                    x:Name="MainViewTab" prism:RegionManager.RegionName="{x:Static inf:RegionNames.MainRegion}"
                    VerticalAlignment="Stretch"
                    ItemContainerStyle="{DynamicResource TabHeaderStyle}" 
                    AutomationProperties.AutomationId="MainViewDeatilTab"        
 />

В регионе Mainregion я загружаю разные виды

 UriQuery parameters = new UriQuery();
            parameters.Add("OBJECTID", item.ObjectId.ToString());
            regionManager.RequestNavigate(RegionNames.MainRegion,
                                            new Uri("AIT.Modules.SiteEditor.Views.SiteEditor" + parameters.ToString(), UriKind.Relative),
                                            NavigationCompleted);

Выбранный элемент привязан к свойству ActiveView, а в свойстве мне нужно вызвать событие, которое содержит OBJECTID в качестве параметра.

Моя проблема заключается в том, что tabcontrols SelectedItem срабатывает до того, как представление имеет возможность загрузить параметр OBJECTID, который я загружаю в Prism OnNavigatedTo. У кого-нибудь есть пример того, как вы управляете событиями открытия и закрытия вкладок, чтобы другие модули могли получать уведомления о текущих представлениях?

1 Ответ

2 голосов
/ 11 марта 2012

Если вы не ненавидите кодовый код в своем главном окне, вы можете подписаться на публичное событие Navigated навигационной службы региона, к которому можно получить доступ через NavigationService -объект IRegion.Соответствующий обработчик события получает NavigationContext запроса навигации и, следовательно, URI.В качестве компромисса вы можете просто делегировать обработку событий из своего основного окна-кода в вашу модель представления.Это как минимум один подход, который я когда-то использовал.

Чтобы избежать выделенного кода, вы можете написать присоединенное свойство для RegionManager, которое устанавливает связь между событием и вашей моделью представления.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...