2010-09-01 6 views
0

Dire que j'ai ViewModel classe MyViewModel comme:Comment créer une nouvelle instance ViewModel dans la classe ViewModel?

public class MyViewModel : ViewModelBase 
    { 
    private Person _person; 
     public Person Person 
     { 
      get { return _person; } 
      set 
      { 
       if (this._person != value) 
       { 
        this._person = value; 
        this.RaisePropertyChanged("Person"); 
       } 
      } 
     } 

    private AddNew(){ 
     this = new MyViewMode(new Person()); 
    } 
    } 

Ce que je veux essayer de créer une nouvelle instance dans ce mode d'affichage dans la méthode AddNew(). Lorsque cette VM se lier à l'interface utilisateur, je veux l'utilisateur peut changer le viewmodel pour la nouvelle entité sans modification de l'interface utilisateur.

Mais je ne peux pas faire cela parce que code this = new MyViewMode (new Person()); ne fonctionnera pas.

Comment résoudre ce problème?

+0

Alors qu'il est généralement acceptable pour une vue de savoir ce modèle vue, il affiche une vue modèle devrait avoir aucune connaissance la vue qui l'affiche. Une approche différente est probablement requise. Pouvez-vous fournir plus d'informations sur ce que vous essayez d'accomplir? –

Répondre

0

Je ne recommanderais pas faire quelque chose comme ça ... Google pour une vue-première ou viewmodel premier ... Ce est une discussion en cours avec beaucoup d'opinions de ce qui fait sens vraiment.

http://wildermuth.com/2009/05/22/Which_came_first_the_View_or_the_Model

De plus je regardais dans le modèle de la ServiceLocator. un service qui Fondamentalement crée les viewmodels pour vous ...

http://johnpapa.net/silverlight/simple-viewmodel-locator-for-mvvm-the-patients-have-left-the-asylum/ http://csharperimage.jeremylikness.com/2010/03/viewmodel-binding-with-managed.html

Questions connexes