Confused with wpf ComboBox DisplayMemberPath, SelectedValue и SelectedValuePath

Я всегда боролся с этими свойствами comboBox

  • DisplayMemberPath
  • SelectedValue
  • SelectedValuePath

Я строю основную форму.

  • ComboBox, заполненный клиентами
  • Пользователь выбирает клиента в Combo
  • Все текстовые поля EG заполняются правильно

Проблема, с которой я столкнулась, заставила ее работать, но я не понимаю эти свойства и различия. Есть ли интересный пример, объясняющий, что они делают? Вы можете подумать, что это самоочевидно. Не обращай внимания на меня.

Спасибо за ваш вклад

Ответ 1

Я думаю, что мы можем лучше понять это на примере. См. Этот класс:

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

и следующий xaml:

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

DisplayMemberPath указывает на свойство Name, поэтому значение, отображаемое в записях ComboBox и Employee, содержащихся в выпадающем списке, будет свойством Name объекта Employee.

Чтобы понять два других, вы должны сначала понять SelectedItem. SelectedItem возвращает текущий выбранный объект Employee из ComboBox. Вы также можете назначить SelectedItem объектом Employee для установки текущего выделения в ComboBox.

SelectedValuePath указывает на Id, что означает, что вы можете получить Id выбранного в данный момент Employee с помощью SelectedValue. Вы также можете установить текущий Employee в ComboBox, установив SelectedValue в Id (который мы предположим, будет присутствовать в списке Employees).