Ich habe drei ComboBoxen, so dass Cs Artikelliste abhängig von dem ausgewählten Artikel in B ist und Bs Artikelliste ist abhängig von dem ausgewählten Artikel in A. Ich habe ObservableCollection
s insbesondere Klassen für die ItemsSource
auf jeder ComboBox, und ich möchte die Name
-Eigenschaft des ausgewählten Elements an eine Eigenschaft in einer anderen Klasse verschoben werden. Zum Beispiel:WPF - Cascading ComboBoxen, abhängige Updates nicht
ObservableCollection<AClass> Items
=> ItemsSource of cbo_A ComboBox
Und selectedInstanceOfAClass.Name
sollte Data.AClassName
Eigenschaft geschoben werden. Das Problem, das ich habe, ist, dass, wenn ich einen Wert in der A ComboBox das erste Mal wähle, die B ComboBox wie erwartet die entsprechenden Elemente basierend auf dem ausgewählten Element in A erhält. Dasselbe gilt für die Auswahl eines Gegenstandes in B zum ersten Mal - C bekommt die richtigen Gegenstände. Wenn ich jedoch einen anderen Wert in A wähle, werden die Elemente in B aktualisiert, aber der ausgewählte Wert von B bleibt gleich, und wenn ich versuche, aus den neuen Elementen einen neuen Wert in B auszuwählen, ändert sich die Auswahl nicht - -es bleibt gleich gewählten Wert als das, was ich ursprünglich in B. ausgewählt
Hier ist die XAML ich habe jetzt:
<ComboBox x:Name="cbo_A"
ItemsSource="{Binding Path=Lists.AItems, Mode=OneWay}"
DisplayMemberPath="Name" SelectedValuePath="Name"
SelectedValue="{Binding Path=Data.AClassName, ValidatesOnDataErrors=True,
Mode=OneWayToSource}" />
<ComboBox x:Name="cbo_B"
ItemsSource="{Binding ElementName=cbo_A, Path=SelectedItem.BItems, Mode=OneWay}"
SelectedValuePath="Name" DisplayMemberPath="Name"
SelectedValue="{Binding Path=Data.BClassName, ValidatesOnDataErrors=True,
Mode=OneWayToSource}"/>
<ComboBox x:Name="cbo_C"
ItemsSource="{Binding ElementName=cbo_B, Path=SelectedItem.CItems, Mode=OneWay}"
SelectedValuePath="Name" DisplayMemberPath="Name"
SelectedValue="{Binding Path=Data.CClassName, Mode=OneWayToSource,
ValidatesOnDataErrors=True}" />
Was mit dem ausgewählten Wert das seltsame Verhalten verursacht nicht aktualisiert, auch wenn ich ausdrücklich Klicken Sie auf die ComboBox und versuchen Sie den Wert zu ändern?
Edit: beim Debuggen und ich hatte einen SelectionChanged
Handler auf cbo_A
und einem anderen auf cbo_B
, trat ich in die cbo_B
Handler vor den cbo_A
ein, so dass das ausgewählte Element aus Sicht der B war noch der alte Artikel, weil A nicht gehabt wurde schon aktualisiert. :/
Edit 2: wenn ich die Reihenfolge meiner Comboboxen in XAML-Flip, von this question vorgeschlagen, so dass C vor B kommt, bevor A kommt, gebe ich A Handler zuerst. Wenn ich dann den Handler für cbo_B
eingeben, zeigt die SelectedItem
-Eigenschaft den alten Wert (zuvor ausgewählt, bevor ich einen neuen Wert in cbo_A
wählte), obwohl ich einen Wert aus der neuen Liste der Elemente in der ComboBox angeklickt.
Bearbeiten 3: Ich bin eine Version von this answer versucht, und das gleiche Problem bekommen: Ich sehe neue Werte in ComboBox B auf den ausgewählten Wert von ComboBox A zu ändern, aber ich kann nicht den ausgewählten Wert in B, nachdem ich ändern habe es schon einmal eingestellt. Ich fange an zu denken, dass etwas anderes schief geht.