Verwechselt mit wpf ComboBox DisplayMemberPath, SelectedValue und SelectedValuePath

73

Ich habe immer mit diesen ComboBox-Eigenschaften gekämpft

  1. DisplayMemberPath
  2. SelectedValue
  3. SelectedValuePath

Ich baue ein Master-Detailformular.

  1. ComboBox mit Kunden gefüllt
  2. Benutzer wählt einen Kunden in Combo aus
  3. Alle Textfelder EG werden korrekt ausgefüllt

Das Problem, das ich habe, ist, dass es funktioniert, aber ich verstehe diese Eigenschaften und die Unterschiede nicht. Gibt es ein nicktes Beispiel, das erklärt, was sie tun?

user451259
quelle

Antworten:

151

Ich denke, wir können dies anhand eines Beispiels besser verstehen. Siehe diese Klasse:

public class Employee
{
   public int Id { get; set; }
   public string Name { get; set; }
}

und das folgende xaml:

<ComboBox ItemsSource="{Binding Source={StaticResource Employees}}"
          DisplayMemberPath="Name"
          SelectedValuePath="Id"/>

DisplayMemberPathzeigt auf die NameEigenschaft, sodass der in der Dropdown-Liste angezeigte Wert ComboBoxund die Employeein der Dropdown-Liste enthaltenen Einträge die NameEigenschaft des EmployeeObjekts sind.

Um die anderen beiden zu verstehen, sollten Sie zuerst verstehen SelectedItem. SelectedItemgibt das aktuell ausgewählte EmployeeObjekt aus dem zurück ComboBox. Sie können auch SelectedItemein EmployeeObjekt zuweisen , um die aktuelle Auswahl in der ComboBox.

SelectedValuePathzeigt auf Id, was bedeutet, dass Sie die Idaktuell ausgewählte Employeemit abrufen können SelectedValue. Sie können auch die aktuell ausgewählte Employeein der ComboBoxdurch die Einstellung SelectedValueauf eine Id( von der wir annehmen wird in der vorliegen EmployeesListe).

Yogesh
quelle
10
Dies ist die prägnanteste und am einfachsten zu verstehende Erklärung dieser Konzepte, die ich gesehen habe.
Joel Wilson
1
Wichtiger Hinweis: Diese Probe würde nicht funktionieren, da Idund Namehaben Eigenschaften sein, nicht Klassenfelder.
Shorstok
3
Du hast recht. Die Klasse sollte nur Pseudocode anzeigen. Repariert.
Yogesh
@ Yogesh IMO, for medas ist besser, prägnanter und leichter zu verstehen als diese Antwort . Ich sagte, for meda wir alle unterschiedliche Arten haben, Dinge zu verstehen. Vielleicht ist die andere Antwort für einige andere Leser besser zu verstehen.
Nam