2 Stimmen

Ein Kombinationsfeld auf der Grundlage des ausgewählten Wertes eines anderen Kombinationsfeldes ausfüllen

Ich habe mehrere Kombinationsfelder (um genau zu sein: 3) und jeder Wert des Kombinationsfeldes hängt von dem ausgewählten Wert des vorherigen Kombinationsfeldes ab. Irgendwelche Vorschläge, wie dies in WPF zu implementieren?

Jedes Kombinationsfeld hat list<> als Elementquelle.

2voto

vaibhav Punkte 1038

Nehmen wir an, die Namen Ihrer Comboboxen lauten comboBox1 , comboBox2 y comboBox3 Im Folgenden gebe ich nur ein Beispiel für ein Ereignis. Auf der Grundlage dieser können Sie Ereignisse für alle Ihre Comboboxen auslösen.

comboBox1.SelectionChanged += new SelectionChangedEventHandler(comboBox1_SelectionChanged);

Dies ist der Ereignisaufruf

void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    comboBox2.SelectedIndex = comboBox1.SelectedIndex;
//do other work here
}

1voto

david Punkte 41

Ich habe etwas Ähnliches in meiner Bewerbung. Sie müssen ObservableCollection<> anstelle von List<> verwenden.

Ich habe 2 ComboBoxen, in denen Sie ein Ergebnis in der ersten ComboBox "gruppieren" können und in der zweiten können Sie, wenn Sie möchten, mehr Details eingeben.

Die erste enthält "Wertpapier, Land, Sektor" und die zweite kann eine Liste von Wertpapieren, Ländern oder Sektoren enthalten... je nach der ersten Auswahl.

Zu diesem Zweck habe ich die Comboboxen an ObservableCollection gebunden. Wenn der Benutzer etwas in ComboBox1 auswählt, erkenne ich es aus dem SelectionChanged Event und fülle die ObservableCollection für ComboBox2 mit Ländern, Sektoren oder Wertpapieren.

Die ObservableCollection<> informiert dann "automatisch" die comboBox2, dass es neue Elemente gibt, und sie wird aktualisiert.

Oh, damit dies funktioniert, müssen Sie es mit dem MVVM-Muster zu tun ... aber ich nehme an, Sie sind bereits mit ihm.

0voto

Yoav Punkte 3316

Sie sollte etwa so lauten:

<ComboBox x:Name="cbModels"
 ItemsSource="{Binding ElementName=comboBox1,Path=SelectedItem.Orders}"
 DisplayMemberPath="OrderId"/>

le site SelectedItem.Orders zeigt die Bestellungen des Kunden an, der in comboBox1 .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X