Es ist nicht möglich, Ihr Verhalten mit einem Schlüsselwertpaar zu erreichen. Siehe das Beispiel unten. Erstellen Sie einfach eine Klasse mit 2 Eigenschaften, eine für Schlüssel und eine für Wert. Binden Sie dann eine Auflistung dieser Klasse als item-Quelle und binden Sie den ausgewählten Wert an eine Zeichenfolgeneigenschaft. Ie Datas.Countries ist die Sammlung der Klasse.
<ComboBox Name="cbSource" Grid.Row="1" Grid.Column="3"
ItemsSource="{Binding Datas.Countries, Mode=OneWay}"
SelectedValue="{Binding SomePropertyToHoldKeyValue, Mode=TwoWay}"
DisplayMemberPath="Value" SelectedValuePath="Key"></ComboBox>
denke ich, dass wir den Unterschied zwischen SelectedItem, SelectedValue, DisplayMemberPath und SelectedValuePath besser mit einem Beispiel verstehen. Diese Klasse:
public class Employee
{
public int Id;
public string Name;
}
und die folgende XAML:
<ComboBox ItemsSource="{Binding Source={StaticResource Employees}}"
DisplayMemberPath="Name"
SelectedValuePath="Id"/>
DisplayMemberPath
verweist auf die Eigenschaft Name, so angezeigt, um den Wert in der ComboBox und die Mitarbeiter Einträge in der Dropdown-Liste enthalten ist, wird die Name-Eigenschaft des Employee-Objekts sein.
Um die anderen zwei zu verstehen, sollten Sie zuerst SelectedItem
verstehen. SelectedItem
wird das aktuell ausgewählte Employee-Objekt aus der ComboBox zurückgeben. Sie können auch SelectedItem
mit einem Employee-Objekt zuweisen, um die aktuelle Auswahl in der ComboBox festzulegen.
SelectedValuePath
verweist auf ID, was bedeutet, dass Sie die ID des derzeit ausgewählten Mitarbeiters mithilfe von SelectedValue
abrufen können. Sie können den aktuell ausgewählten Mitarbeiter auch in der ComboBox festlegen, indem Sie auf eine ID setzen (von der wir annehmen, dass sie in der Mitarbeiterliste vorhanden ist).
Ich verstehe nicht, was Sie hier zu fragen versuchen. Bitte klären Sie. – Martin