2012-04-17 15 views
6

Attualmente sto lavorando con il controllo Tab e ho creato una regione in modo che diventi il ​​mio host.Prisma WPF come avere viste duplicate all'interno di una regione

quello che sto cercando di fare è aggiungere la stessa vista ad una regione due volte .. si potrebbe chiedere perché? e perché l'applicazione sta diventando una semplice app di chat - ci saranno molte istanze della vista ma ognuna avrà informazioni diverse.

il mio codice finora ;;

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

E i miei punti di vista sono registrati con unità così ;;

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

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

anche, il mio 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> 

Edit: la mia domanda reale è questo .. E 'possibile avere una vista duplicati all'interno di una regione? Quando lo provo attualmente ho un'eccezione sul fatto che è già stato registrato. Ciò di cui ho veramente bisogno è bypassarlo o creare una regione che lo consenta.

grazie per qualsiasi aiuto !!

evviva. ste.

+0

Non sono sicuro di quello che stai chiedendo. Non hai appena scritto la tua risposta alla tua domanda. "Una regione è collegata a un elemento dell'interfaccia utente come un ** ContentControl **, ** ItemsControl **, ** TabControl ** o un controllo cliente e gestisce il contenuto dell'elemento dell'interfaccia utente". Quindi sì, dovrebbe funzionare. –

+0

@Rikkos - si prega di vedere il mio commento aggiornato .. quello che sto fondamentalmente cercando è avere viste duplicate all'interno della mia regione! – Steoates

+1

solo un'idea di risoluzione dei problemi, hai provato GetHashCode() per vedere se TransientLifetimeManager ti dà istanze diverse? –

risposta

2

Prova questo.

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

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

Che non ha funzionato tristemente - ha dato il seguente errore .. "{" L'elemento specificato è già il figlio logico di un altro elemento. Prima disconnettilo. "}" – Steoates

+0

Attendi, duplica come ESATTAMENTE lo stesso o dello stesso tipo. Non ti vedo usando la stessa istanza. Ho fatto un progetto di test e non ho alcun problema. Ho provato di tutto. Posso dare un'occhiata al tuo progetto se ce l'hai disponibile. questa sarebbe l'ultima opzione per aiutarti a fare lo stesso tipo di –

+0

- dovrebbero esserci istanze proprie del modello di visualizzazione/presentazione solo con dati diversi. – Steoates

0

provare questa soluzione:

IRegion TabRegion = manager.Regions["TabRegion"]; 
tabRegion.Add(convDetailsView1).AdToRegion("make your region here",convDetailsView2); 
Problemi correlati