Sagen wir, ich habe eine Klasse, nennen wir sie Eltern. Diese Klasse hat als Eigenschaft ein Objekt einer anderen Klasse, nennen wir es Child. Child hat eine Int-Eigenschaft-ID.WPF: ComboBox, Objekte basierend auf identifizierender Eigenschaft vergleichen
Nun basieren Instanzen dieser Klassen auf Zeilen in Datenbanktabellen.
Also sagen wir, Parent hat Child-Instanz mit ID = 4 und in meinem Programm wird eine Dropdown-Liste mit allen verfügbaren Child-Instanzen, so dass wir die Instanz in Parent ändern können.
Problem ist, dass wegen des schlechten Designs die Liste mit allen Kindobjekten zu einem anderen Anlass vom Kind innerhalb des Elternteils instanziiert wird. Selbst wenn sie beide ID = 4 haben, werden sie sie nicht als dasselbe Objekt erkennen natürlich ist es nicht).
Allerdings möchte ich immer noch das gleiche ID-Objekt als Standard für die ComboBox verwenden. Ich sollte irgendwie irgendwie auf die ID verweisen, aber ich bin ein bisschen langsam im dunklen Monat Dezember und ich sehe nicht, wie es geht, weil es immer noch das Objekt ist, das ich nicht nur int Wert setze. Hier
ist der XAML-Code:
<DataTemplate x:Key="EditTemplate" DataType="{x:Type data:Parent}">
<ComboBox ItemsSource="{Binding ElementName=Panel, Path=DataContext.ChildList}"
SelectedItem="{Binding Path=Child, Mode=TwoWay}"
SelectedValuePath="ID" DisplayMemberPath="Name" />
</DataTemplate>
Hmm natürlich sollte das funktionieren. Ich suchte nach einer Lösung i XAML aber das sollte natürlich funktionieren und ist eleganter. –