Kolejne pytanie z cyklu WinForms.
Mam sobie klasę reprezentującą coś a'la słownik oraz listę takich takich obiektów, która jest listą wartości do wypełnienia opcji comboboxa.
public class MyDict
{
public string Code {get; set;}
public string Name {get; set;}
}
no i lista
public IList<MyDict> DictionariesList {get;set;}
Na formie mam model, który zawiera wybrany element:
public class MyViewModel
{
public MyDict SelectedDict {get; set;}
}
comboboxa na tej formie "zasilam" wartościami z listy:
combobox.DataSource = new BindingList(DictionariesList);
combobx.ValueMember = "Code";
combobox.DisplayMember = "Name";
i binduję do modelu:
comboBox.DataBindings.Add("SelectedItem", Model, "SelectedDict");
i teraz jeśli wybiorę na comboboxie jakąś wartość to SelectedDict ustawia się na modelu prawidłowo.
Ale jeśli odczytam klasę np z bazy albo stworzę go ręcznie:
var model = new Model();
model.SelectedDict = new MyDict() { Code="Kod", Name="JakaśNazwa"};
to pomimo że taki MyDict(o takim Code i Name) znajduje się na liście to na comboboxie się nie wybiera.
Musiałbym wyszukać na liście element o danym kodzie i ten element z listy przypisać do MyDict, wtedy na comboboxie się wartość zmieni.
Da się to naprawić jakoś?