2012-04-17 79 views
6

我目前正在使用Tab控件並創建了一個區域,因此它將成爲我的主機。WPF Prism如何在區域內重複視圖

我想要做的是將同一視圖添加到區域兩次..你可能會問爲什麼?因爲應用程序正在進行一個簡單的聊天應用程序 - 視圖中有很多實例,但每個實例都有不同的信息。

我的代碼至今;;

 IConversationDetailsPresentationModel convDetailsView1 = 
      this.Container.Resolve<IConversationDetailsPresentationModel>(); 

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

     manager.RegisterViewWithRegion("TabRegion",() => convDetailsView1); 

     IConversationDetailsPresentationModel convDetailsView2 = 
      this.Container.Resolve<IConversationDetailsPresentationModel>(); 

     manager.RegisterViewWithRegion("TabRegion",() => convDetailsView2); 

而且我的看法是,像這樣具有統一登記;;

this.Container.RegisterType<IConversationDetailsPresentationModel,     ConversationDetailsPresentationModel>(
      new TransientLifetimeManager()); 

     this.Container.RegisterType<IConversationDetailsView, ConversationDetailsView>(
      new TransientLifetimeManager()); 

另外,我的XAML

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

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

編輯:我的實際問題是這樣的..是否有可能有一個區域內重複的觀點?當我嘗試它時,我得到一個關於它已被註冊的異常..我真正需要的是繞過這個或可能創建一個允許它的區域。

感謝您的任何幫助!

歡呼聲。 ste。

+0

我不知道你在問什麼。你不是隻爲自己的問題寫出自己的答案。 「區域附加到UI Content元素,如** ContentControl **,** ItemsControl **,** TabControl **或客戶控件,並管理UI元素的內容」。所以是的,它應該工作。 – 2012-04-17 11:17:29

+0

@Rikkos - 請參閱我的更新評論..我基本上尋找的是在我的區域內有重複的意見! – Steoates 2012-04-17 11:53:18

+1

只是一個故障排除的想法,你有沒有嘗試過GetHashCode()來看看TransientLifetimeManager是否給你不同的實例? – 2012-04-17 15:28:48

回答

2

試試這個。

IRegion TabRegion = manager.Regions["TabRegion"]; 

tabRegion.Add(convDetailsView1); 
tabRegion.Add(convDetailsView2); 
+0

這並不令人遺憾 - 它給出了跟隨誤差。「{」指定的元素已經是另一個元素的邏輯子元素。先斷開它。「}」 – Steoates 2012-04-17 12:45:54

+0

等待,重複完全相同或相同類型。我沒有看到你使用相同的實例。我做了一個測試項目,我沒有任何問題。我已經嘗試了一切。如果你有這個項目,我可以看看你的項目。這將是最後一個選項來幫助你 – 2012-04-17 13:17:59

+0

相同的類型真的 - 他們應該有自己的視圖/演示模型的實例只是不同的數據.. – Steoates 2012-04-17 15:03:22

0

嘗試此解決方案:

IRegion TabRegion = manager.Regions["TabRegion"]; 
tabRegion.Add(convDetailsView1).AdToRegion("make your region here",convDetailsView2); 
相關問題