У меня есть несколько ListViews
, которые зависят от содержимого Dictionary<string,string>
s. У меня также есть одна функция для каждого словаря для обновления связанного с ней файла ListView
. Однако их нужно называть вручную, и это может вызвать все проблемы, если их забудут. Можно ли вызвать функцию, когда какое-либо значение в словаре изменяется?Функция запуска при изменении содержимого словаря
Мои первоначальные мысли заключались в использовании DataBinding
, но Listview
не поддерживает это в WinForms
или поднять некоторые пользовательские события, но я даже не знаю, с чего начать.
Есть ли простой способ добиться этого?
Просто для уточнения я говорю о чем-то, что имеет этот эффект:
Dictionary[key] = "this"; //Automatically runs UpdateDictionaryBox();
Dictionary.Add(key,value); //The same
Dictionary.Remove(key); //And again
Что-то вроде ['ObservableDictionary'] (http://blogs.microsoft.co.il/shimmy/2010/12/26/observabledictionarylttkey-tvaluegt-c/)? –
Почему бы не использовать 'DataGridView', привязанный к' BindingList ', где T реализовано' INotifyPropertyChanged'? –
Обычно вы можете избежать таких вещей путем инкапсуляции и отдельных классов ответственности. Если у вас есть класс, содержащий этот словарь, и это будет закрыто, никто не сможет получить доступ к нему, кроме этого класса. Затем вы можете предоставить свойства/методы для изменения, добавления или удаления элементов. Это единственное место, где вам нужно справиться с этим, т. Е. путем запуска настраиваемого события, которое можно обработать, вы можете вызвать 'UpdateDictionaryBox' –