2012-03-24 10 views
0

Ich verwende MVVM für meine Anwendung.Wie kann ich diesen Ansatz verbessern, wenn ich ein neues Objekt in einer Liste hinzufüge?

Das ist mein Szenario. Ich habe eine ViewModel, in der ich eine ObservableCollection<Person> und einen Delegiertenbefehl für AddPersonCommand enthält.

Person Klasse enthält Vorname, Nachname und Alter. Aus meiner Sicht habe ich drei Textboxen angelegt und jedes einzelne an die Eigenschaften der Person gebunden. I.E.

  • TextBox1: Vorname Bindung
  • TextBox2: Bindung Name VZ
  • TextBox3: Bindung Alter

Also meine ViewModel aussetzt:

  • Vorname: string
  • Name: string
  • Alter: int
  • Personen: ObservableCollection

Und wenn ich den Delegaten Befehl verwenden, würde ich sein:

public void AddPersonCommand() 
{ 
    Person newPerson = new Person() 
    { 
     FirstName = _firstName, 
     Last... , 
     Age = ... 
    }; 

    Persons.Add(newPerson); 
} 

Aber ich denke, dieser Ansatz ist überflüssig. Ich meine, ich möchte nicht jede Eigenschaft aus dem Modell kopieren, ich nehme an, es gibt einen besseren Weg, dies zu tun.

+0

Können Sie die Frage neu formulieren? Es ist nicht klar, was Sie fragen – cordialgerm

+0

Nicht ganz sicher, ob die Frage verstehen. Könnten Sie es bitte mit einer Probe klären? – kroonwijk

+0

Eigentlich müssen Sie eine Person an ein übergeordnetes Steuerelement aller dieser Textfelder binden, und danach müssen Sie nur dieses Person-Objekt zur Liste hinzufügen. Wenn Sie Mode = TwoWay verwenden, ist es bereits mit TextBox-Informationen gefüllt. Entschuldigung, wenn ich nicht imstande bin zu leben. –

Antwort

1

Verwenden Sie nicht Vorname, Nachname und Alter in Ihrem Ansichtsmodell. Verwenden Sie einfach ein Person-Objekt. Dann ist Ihr Code einfach:

Es sieht so aus, als ob Sie separate Personeneigenschaften in Ihrem Ansichtsmodell haben, um die Bindung zu erleichtern. Das ist unnötig. Anstatt an die LastName-Eigenschaft des Ansichtsmodells zu binden, binden Sie die Person.LastName des Ansichtsmodells. Und Person.FirstName. Und Person.Age.

+0

Vielleicht irre ich mich, aber wenn ich die newPerson hinzufügen, wird immer die gleiche Referenz sein, nicht wahr? –

+0

Erstellen Sie eine andere Personenvariable. –

Verwandte Themen