2016-04-25 15 views
2

Ich baue eine medizinische App mit wpf, und ich habe eine Liste für die Rezepte eines Patienten erstellt, wo ich sie mit einer .add-Funktion hinzufügen. aber es wird immer nur der letzte hinzugefügte Eintrag angezeigt, nicht alle. Irgendwelche Meinungen? ! Vielen Dank im Voraus Unten ist mein Code:Liste zeigt immer nur das erste Element C#

private void AddMeds_Click(object sender, RoutedEventArgs e) 
{ 
    if (MedNameAdd.Text != null && MedQuantAdd.Text != null && QuantType.Text != null) 
    { 
     List<string> medlist = new List<string>(); 
     int i = 0; 
     medlist.Add(MedNameAdd.Text + " " + MedQuantAdd.Text + "  " + QuantType.Text); 
     MedList.ItemsSource = medlist; 
     Address.Text = medlist[i]; 
     i++; 
    } 
} 
+1

Nun, Sie erstellen jedes Mal neue Liste. Und nur 1 Element hinzufügen. Also das Ergebnis ist eine Liste mit einem Element. –

Antwort

1

Es scheint, dass in Ihrem Code, den Sie immer wieder neu erstellt leer Liste und fügen Sie es als ItemSource. Verwenden Sie stattdessen-re die bestehenden

if (MedNameAdd.Text != null && MedQuantAdd.Text != null && QuantType.Text != null) 
    { 
     var medlist = MedList.ItemsSource as List<string>; 
     int i = 0; 
     medlist.Add(MedNameAdd.Text + " " + MedQuantAdd.Text + "  " + QuantType.Text); 
     Address.Text = medlist[i]; 
     i++; 
    } 
1

Die Liste medList im Verfahren lokal ist AddMeds_Click, was bedeutet, dass sie neu in jedem Aufruf erstellt wird.

+0

Ich habe das versucht, aber es erkennt es später nicht, weil es außerhalb der Klick-Funktion ist – Damianos

1

Da jedes Mal, wenn ein neues hinzugefügt wird, Sie die Datenquelle von Grund auf neu empfangen, nur das neu hinzugefügte Element hinzufügen und alle zuvor hinzugefügten Elemente löschen.

die Erklärung des List<string> außerhalb des Handlers Click-Ereignisses verschieben:

List<string> medlist = new List<string>(); 
private void AddMeds_Click(object sender, RoutedEventArgs e) 
    { 
     if (MedNameAdd.Text != null && MedQuantAdd.Text != null && QuantType.Text != null) 
     { 
      int i = 0; 
      medlist.Add(MedNameAdd.Text + " " + MedQuantAdd.Text + "  " + QuantType.Text); 
      MedList.ItemsSource = medlist; 
      Address.Text = medlist[i]; 
      i++; 

     } 
2

Sie schaffen neues List jedes Mal bewegen sich die Erklärung nach außen Funktion.

List<string> medlist = new List<string>(); 

private void AddMeds_Click(object sender, RoutedEventArgs e) 
{ 
    if (MedNameAdd.Text != null && MedQuantAdd.Text != null && QuantType.Text != null) 
    { 
     medlist.Add(MedNameAdd.Text + " " + MedQuantAdd.Text + "  " + QuantType.Text); 
     MedList.ItemsSource = medlist; 
     Address.Text = medlist.LastOrDefault(); // shows last added item.  
    } 
} 
0

Scheint Ihnen neue Instanz von List-Klasse erstellen, jedes Mal in Event-Handler und das Hinzufügen nur ein Element:

medlist.Add(MedNameAdd.Text + " " + MedQuantAdd.Text + "  " + QuantType.Text); 

so Ihre Liste als Klasse Mitglied instanziiert und verwenden Sie diese Liste Objekt in Ereignishandler um die Werte auf diese Weise zu halten:

Verwandte Themen