2010-10-20 5 views
1

Je suis créer projet avec Josh Smith THE MODEL-VIEW-VIEWMODEL (MVVM) DESIGN PATTER FOR WPFJosh Smith MVVM Motif gros problème

Mais a un problème. Le même espace de travail a montré la même opération. Mon VIEW contient tabcontrol. après avoir créé 2 ou plusieurs espaces de travail identiques, lorsque je changeais l'index sélectionné pour tabcontrol à partir de n'importe quel espace de travail, un autre même tabcontrol d'espace de travail affichait le même résultat.

Je suis testé sur le projet Josh Smith. Mais même que mon projet. Si vous voulez montrer. télécharger le code Josh Smith de here et sur les changements MainWindowViewModel.cs code suivant de

void ShowAllCustomers() 
     { 
      AllCustomersViewModel workspace = null; 
       this.Workspaces.FirstOrDefault(vm => vm is AllCustomersViewModel) 
       as AllCustomersViewModel; 

      if (workspace == null) 
      { 
       workspace = new AllCustomersViewModel(_customerRepository); 
       this.Workspaces.Add(workspace); 
      } 

      this.SetActiveWorkspace(workspace); 
     } 

Pour

void ShowAllCustomers() 
     { 
      AllCustomersViewModel workspace = null; 

      workspace = new AllCustomersViewModel(_customerRepository); 
      this.Workspaces.Add(workspace);    

      this.SetActiveWorkspace(workspace); 
     } 

Exécutez ensuite le code et Open 2 ou plus All Customer view et vue Liste changer Ordre des colonnes. Tous ouvert all customer view montré même résultat

Comment résoudre ce problème

Répondre

3

Si je pourrais citer Sacha Barber le créateur de Cinch http://www.codeproject.com/KB/WPF/CinchV2_3.aspx voir la section « Espaces de travail: Notes spéciales » Du son de celui-ci, vous pourriez avoir la même problème, mais j'apprends aussi, donc je peux me tromper. "Maintenant, tout cela est grandiose, mais malheureusement, WPF jette un peu de bizarre sur notre chemin, sous la forme du TabControl qui est un BASTARD d'un contrôle.Comment vous savez que dans WPF le VisualTree TabControls ne garde que L'élément sélectionné dans le VisualTree

Non, détrompez-vous (bien que cela ne pose problème que lorsque vous utilisez DataTemplates, la combinaison directe de TabItem/View est correcte.) Nous avons donc plusieurs vues qui utilisent MeffedMVVM pour créer un ViewModel dans un TabControl.Nous modifions ensuite les onglets, et devinons ce que la vue est saccagée, et quand nous revenons à un TabItem précédent, comme nous utilisons view 1st et MeffedMVVM, un nouveau ViewModel est créé pour la vue. "

+0

merci pour la relecture. Je verrai cet article. – ebattulga

1

Je ne suis pas sûr de comprendre ce que vous essayez de dire, mais j'ai eu un problème en raison du fait que le nouvel onglet n'a pas été sélectionné lors de l'ajout d'un espace de travail. Définir la propriété IsSynchronisedWithCurrentItem sur True sur le TabControl a résolu le problème pour moi.

Questions connexes