2017-03-20 4 views
1

so habe ich den folgenden Code in meinem Windows Forms-Projekt verwendet, alles hat gut funktioniert. Jetzt möchte ich diesen Code in meinem wpf-Projekt verwenden, aber die zweite Combobox (cbFahrzeugModell) zeigt die Daten eines anderen ComboBox Items, idk warum.C# WPF ComboBox Daten zeigt nicht die richtigen Daten

Also, um zusammenzufassen: 2 Comboboxen (cbFahrzeugHersteller und cbFahrzeugModell). Wenn ich einen Artikel in cbFahrzeugHersteller auswähle, sollte cbFahrzeugModell die entsprechenden Artikel in cbFahrzeugModell anzeigen. Es werden Elemente angezeigt, aber es werden die Daten für den falschen ItemIndex von cbFahrzeugHersteller angezeigt.

 private void cbFahrzeugHersteller_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     cbFahrzeugModell.IsEnabled = true; 
     cbFahrzeugModell.Items.Clear(); 
     cbFahrzeugModell.Text = ""; 

     try 
     { 
      connection.Open(); 

      OleDbCommand command = new OleDbCommand(); 
      command.Connection = connection; 
      string query = "SELECT DISTINCT Modell FROM Autos WHERE Hersteller = @FahrzeugHersteller;"; 
      command.CommandText = query; 
      command.Parameters.Add("@FahrzeugHersteller", SqlDbType.Text); 
      command.Parameters["@FahrzeugHersteller"].Value = cbFahrzeugHersteller.Text; 
      OleDbDataReader reader = command.ExecuteReader(); 
      while (reader.Read()) 
      { 
       cbFahrzeugModell.Items.Add(reader["Modell"].ToString()); 
      } 

      connection.Close(); 
     } 
     catch (Exception ex) 
     { 
      System.Windows.Forms.MessageBox.Show("Error " + ex); 
     } 
    } 

Antwort

0

Im SelectionChanged Veranstaltung, die Text Eigenschaft des ComboBox wird die vorherige Auswahl sein. Versuchen Sie, oder cbFahrzeugHersteller.SelectedItem zu werfen. e.AddedItems[0] ist eine andere Option. Ich nehme an, dass jeder von denen eine Zeichenfolge sein wird, aber da Sie nicht sagen, wie cbFahrzeugHersteller könnte es etwas anderes sein. Wenn dies der Fall ist, müssen Sie einen Haltepunkt setzen und genau herausfinden, was Sie tun, wenn Sie diese Eigenschaften im Überwachungsfenster untersuchen.

Wenn Sie versuchen, Winforms-Code direkt in WPF zu übersetzen, stoßen Sie auf endlose Probleme wie diese. Die beiden Frameworks unterscheiden sich grundlegend voneinander. Wenn Sie vorhaben, bei WPF zu bleiben, sollten Sie MVVM lernen und WPF zu seinen eigenen Bedingungen angehen. Der Versuch, WinForms-Code in WPF zu schreiben, ist eine garantierte Möglichkeit, sich elend zu fühlen.

Ein Maß für die Bedeutung der ComboBox.Text Eigenschaft in WPF ist, dass jeder Tag professionell WPF nach fünf Jahren zu schreiben und Fragen auf Stack-Überlauf zu beantworten, ich ein wenig überrascht war eine Text Immobilie zu finden, dass System.Windows.Controls.ComboBoxhatte.

+1

Arbeitete mit cbFahrzeugHersteller.SelectedValue, DANK U! –

Verwandte Themen