Laden...

Silverlight 4: ComboBox wird nicht aktualisiert, wenn gebundene Liste geändert wird

Erstellt von Stipo vor 13 Jahren Letzter Beitrag vor 13 Jahren 888 Views
Stipo Themenstarter:in
699 Beiträge seit 2007
vor 13 Jahren
Silverlight 4: ComboBox wird nicht aktualisiert, wenn gebundene Liste geändert wird

Hallo zusammen,

ich habe ein Problem mit meinen ComboBoxen in Silverlight 4 und bin am verzweifeln, da ich nicht heraus finde wo der Fehler ist.
Im Internet hab ich schon gesucht, aber alles was ich finde, basiert auf 1 ComboBox.

Folgendes Szenario:
Es gibt 2 ComboBoxen. In der ComboBox1 werden Hersteller eingefügt. Die ComboBox2 soll dann Varianten bekommen, in abhängigkeit vom dem gewählten Hersteller.

Im moment habe ich das folgend aufgebaut:
in der XAML Datei definiere ich 2 ComboBoxen, welche ich dann im Backend fülle.
Die ComboBox1 binde ich an eine List<Hersteller> was mir die Einträge auch korrekt anzeigt.
Im SelectionChanged-Event der ComboBox1 lade ich dann aus der Datenbank die Varianten der Hersteller nach und fülle damit auch eine List<HerstellerVariante> und binde die an die ComboBox2.ItemsSource.

Nun das Problem. Die ComboBox 2 wird zwar dann befüllt, aber genau nur 1x.
Danach ändert sich nicht an den Einträgen mehr.
Ich habe schon geprüft ob die List<HerstellerVariante> auch richtig gefüllt wird, was es auch tut.

Wo hab ich da einen Denkfehler?
Oder kennt jemand eine Seite, wo genau so ein szenario erklärt wird?


public class HerstellerVariante
{
     public int ID { get; set; }
     public string Value { get; set; }
}

Grüße Stephan

297 Beiträge seit 2008
vor 13 Jahren

Versuch das Ganze mal mit INotifyPropertyChanged und/oder ObservableCollections.

There are 10 kind of people, those who understand binary and those who don't.

1.433 Beiträge seit 2006
vor 13 Jahren

Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt

Stipo Themenstarter:in
699 Beiträge seit 2007
vor 13 Jahren

Nabend zusammen,

Versuch das Ganze mal mit INotifyPropertyChanged und/oder ObservableCollections.

Das hatte ich auch schon versucht, aber ging nicht.

Ich hab aber die Lösung gefunden.

Man muss die Daten in einer Klasse unterbringen die folgend aussieht:


public class Hersteller
{
     public Int32 HerstellerId { get; set; }
     public string HerstellerName { get; set; }
     public ObservableCollection<Variante> Varianten { get; set; }
}

public class Variante
{
     public Int32 VarianteId { get; set; }
     public string VarianteName { get; set; }
}

Das kann man dann an die comboBox1 im DataContext binden und damit dann im XAML Code nutzen.
In der comboBox2 sagt man dann im ItemsSource="{Binding ElementName=comboBox1, Path=SelectedItem}" .

Gruß Stephan