Я некоторое время изучал это, и по этой теме есть много вопросов, но я не смог найти четкого ответа.
У меня есть объект Listbox
(listBox1) и IDictionary
(клиенты) в приложении Windows Forms.
public static IDictionary<string, Object> clients = new Dictionary<string, Object>();
Я могу использовать следующее для заполнения Listbox
из IDictionary
:
listBox1.DataSource=clients.ToList();
form_m.listBox1.DisplayMember = "key";
Вопрос № 1 : как правильно использовать привязку данных со списком? Я пробовал следующее
listBox1.DataBindings.Add("DataSource", clients, "Key");
Я получаю исключение
System.Reflection. System.Net.Sockets.Socket, System, Version = 4.0.0.0, Culture = нейтральный, PublicKeyToken = b77a5c561934e089]] 'выдал следующее исключение:' Объект не соответствует типу цели. '
System.Reflection.TargetException: объект не соответствует типу цели.
Когда я пытаюсь
listBox1.DataBindings.Add("DataSource", clients.ToList(), "Key");
Я получаю исключение
System.ArgumentException: комплексная привязка данных принимает в качестве источника данных либо IList, либо IListSource.
Вопрос № 2: это работает, но я хочу, чтобы список обновлялся при появлении нового ключа, значения, добавленного или удаленного из IDictionary
. Как я понимаю, мне нужно сделать и использовать расширенный Observable
класс IDictionary
. Или есть другое более простое решение для этого?
PS: не обязательно должен быть IDictionary
, но любая структура данных. Но мне нужно обновить список, так как в структуру данных вносятся изменения.
Один такой, который я нашел, был пример