2012-02-27 129 views
0

在我的主窗口中我有一個選項卡控件,我需要通知不同的模塊,不同的選項卡已被激活或關閉。該的TabControls的SelectedItem必將有效收視在我的視圖模型棱鏡請求導航

<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); 

的selectedItem屬性綁定到財產的ActiveView和財產我需要提高的事件包含OBJECTID作爲參數。

我的問題是在視圖有機會加載OBJECTID參數(我在Prism OnNavigatedTo中加載)之前觸發tabcontrols SelectedItem。任何人都有關於如何管理tabcontrols打開和關閉事件的例子,以便其他模塊可以通知當前視圖?

回答

2

如果你沒有你的厭中MainWindow的代碼隱藏,你可以訂閱公共Navigated事件該地區的導航服務的一個可通過的IRegionNavigationService - 屬性訪問。相應的事件處理程序獲取導航請求的NavigationContext,從而獲取URI。 作爲一種折衷方案,您可以將事件處理從您的mainwindow-code-behind委派給您的viewmodel。 這是我曾經使用的至少一種方法。

爲避免代碼隱藏,您可以爲RegionManager編寫一個附加屬性,爲您在事件和視圖模型之間建立連接。

希望這會有所幫助。

+0

謝謝我以另一種方式解決它,但你的似乎更好。沒有意識到NavigatonService – klashagelqvist 2012-03-11 10:57:03