2012-04-18 57 views
0

我有一個選項卡控件,它附加了一個區域,並且我的選項卡控件內容還與另一個區域有內容控件。在選項卡控件中的WPF Prism區域不在區域列表中

我遇到的問題是 - 如果我調用RegisterViewWithRegion它將視圖添加到該區域沒有問題(第一次,即如果交換標籤,則會出現問題)。但這不是很靈活,我正在尋找更好的方法來做到這一點。

當我在IRegionManager.Regions中查看時 - 我只能看到兩個頂級區域。我看不到我的子區域TabContentRegion。有沒有辦法註冊這個,所以我可以用通常的方式來添加視圖並激活它們?

<TabControl TabStripPlacement="Left" 
      Width="Auto" 
      Height="Auto" 
      cal:RegionManager.RegionName="TabRegion" 
      Name="TabRegion" 
      SelectedItem="{Binding SelectedTab}"> 
    <TabControl.ContentTemplate> 
     <DataTemplate> 

      <ContentControls:TransitionContentControl 
       cal:RegionManager.RegionName="TabContentRegion" /> 

     </DataTemplate> 
    </TabControl.ContentTemplate> 
</TabControl> 

該代碼將欣賞到TabRegion

public void Load() 
{ 
    IConfigurationDetailsPresentationModel convDetailsView1 = 
     this.Container.Resolve<IConfigurationDetailsPresentationModel>(); 

    IRegionManager manager = this.Container.Resolve<IRegionManager>(); 
    manager.RegisterViewWithRegion("TabRegion",() => convDetailsView1); 

    IConversationDetailsPresentationModel conversationDetails = 
     this.Container.Resolve<IConversationDetailsPresentationModel>(); 
    manager.RegisterViewWithRegion("TabRegion",() => conversationDetails); 
} 

然後,這是我一直在用實際的TabContentRegion

public IPresentationModel SelectedTab 
{ 
    get { return _selectedTab; } 
    set 
    { 
     _selectedTab = value; 

     IRegionManager service = this.Container.Resolve<IRegionManager>(); 

     if (service != null) 
     { 
      service.RegisterViewWithRegion(
       "TabContentRegion", 
       () => _selectedTab.View); 
     } 
    } 
} 

顯示視圖,你可以在代碼看 - 這有點瘋狂,不太合適。任何想法我做錯了什麼?

感謝您的幫助!

回答

0

很多玩和谷歌搜索後,我終於碰到並回答!

因爲該區域位於數據模板內,所以棱鏡標準行爲不會將其拾取並註冊到區域管理器。

使用提供的代碼here它幫助我解決了這個問題並照常進行! :)

歡呼聲。 ste。

相關問題