2012-04-17 10 views
6

Actualmente estoy trabajando con el control Tab y he creado una región para que se convierta en mi host.Prisma WPF cómo tener vistas duplicadas dentro de una región

lo que trato de hacer es agregar la misma vista a una región dos veces ... ¿puede preguntar por qué? y es porque la aplicación va a ser una simple aplicación de chat: habrá muchas instancias de la vista pero cada una tendrá información diferente.

mi código hasta ahora ;;

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

Y mis opiniones están registradas con la unidad como tal ;;

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

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

también, mi 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> 

Editar: mi pregunta real es este .. ¿Es posible tener puntos de vista duplicados dentro de una región? Cuando lo intento, recibo una excepción porque ya está registrado. Lo que realmente necesito es omitir esto o crear una región que lo permita.

gracias por cualquier ayuda !!

aplausos. ste.

+0

No estoy seguro de lo que están pidiendo. ¿No acabas de escribir tu propia respuesta a tu pregunta? "Una región está conectada a un elemento de la interfaz de usuario como ** ContentControl **, ** ItemsControl **, ** TabControl **, o un control de cliente, y administra el contenido del elemento de la interfaz de usuario". Entonces sí debería funcionar. –

+0

@Rikkos - por favor vea mi comentario actualizado ... ¡lo que básicamente busco es tener vistas duplicadas dentro de mi región! – Steoates

+1

solo una idea para la solución de problemas, ¿ha probado GetHashCode() para ver si TransientLifetimeManager le está dando instancias diferentes? –

Respuesta

2

Pruebe esto.

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

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

Eso no funcionó tristemente, dio el siguiente error ... "{" El elemento especificado ya es el elemento lógico de otro elemento. Desconéctelo primero. "}" – Steoates

+0

Espere, duplique como EXACTAMENTE igual, o del mismo tipo. No te veo usando la misma instancia. Hice un proyecto de prueba y no tengo ningún problema. He intentado todo. Puedo echarle un vistazo a tu proyecto si lo tienes disponible. esa sería una última opción para ayudarlo –

+0

Mismo tipo realmente - deberían estar allí su propia instancia del modelo de vista/presentación solo con datos diferentes .. – Steoates

0

Pruebe esta solución:

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