У меня есть Dictionary, который содержит элементы и цены. Элементы уникальны, но медленно добавляются и обновляются через время жизни приложения (то есть я не знаю строки элемента заранее). Я хотел бы привязать эту структуру к DataGridView, поэтому я могу показывать обновления в моей форме, например:
Dictionary<string, double> _priceData = new Dictionary<string, double>();
BindingSource _bindingSource = new BindingSource();
dataGridView1.DataSource = _bindingSource;
_bindingSource.DataSource = _priceData;
Но не может, поскольку Dictionary не реализует IList (или IListSource, IBindingList, или IBindingListView).
Есть ли способ достичь этого? Мне нужно сохранить уникальный список элементов, но также обновить цену для существующего элемента, поэтому Dictionary - идеальная структура данных, я думаю, но я не могу найти способ отображения данных в моей форме.
Update:
Предложение Marc ниже работает очень хорошо, но я все еще не уверен, как обновить DataGridView во время выполнения.
У меня есть переменная уровня класса:
private DictionaryBindingList<string, decimal> bList;
Затем укажите, что в Main():
bList = new DictionaryBindingList<string,decimal>(prices);
dgv.DataSource = bList;
Затем во время выполнения программы, если в словарь добавлена новая запись:
prices.Add("foobar", 234.56M); bList.ResetBindings();
Я думал, что обновит DataGridView. Почему бы и нет?