Winforms Привязка ComboBox SelectedItem к свойству объекта
У меня есть два простых класса:
public class Customer
{
public String CustomerID { get; set; }
public String Forename { get; set; }
public String Surname { get; set; }
}
а также
public class Order
{
public String OrderID { get; set; }
public Decimal Value { get; set; }
public Customer OrderedBy { get; set; }
}
Затем я создаю список объектов Customer:
List<Customer> customers = new List<Customer>();
customers.Add(new Customer() { CustomerID = "1", Forename = "John", Surname = "Smith"});
customers.Add(new Customer() { CustomerID = "2", Forename = "Jeremy", Surname = "Smith" });
И у меня есть поле со списком, для которого я устанавливаю источник данных, чтобы быть моим списком клиентов, и DisplayMember, чтобы быть свойством Forename объекта Customer:
comboBox1.DisplayMember = "Forename";
comboBox1.DataSource = customers;
И в результате получается комбинированное окно с двумя элементами: «Джон» и «Джереми». До сих пор я не слишком смущен.
Однако я хотел бы иметь возможность установить свойство «OrderedBy» экземпляра Order на основе выбора из Combobox. Могут ли сложные типы быть привязаны к ComboBox, как это?
Я пробовал это, но, похоже, не обновляет свойство OrderedBy экземпляра Order:
Order myOrder = new Order();
comboBox1.DataBindings.Add("SelectedItem", myOrder, "OrderedBy");
Я не знаю, возможно ли то, что я пытаюсь сделать, или это выходит за рамки возможностей привязки данных в WinForms.
Я хотел бы избежать необходимости обновлять мой объект Order как часть обработчика событий в ComboBox и по возможности использовать только привязку данных.