|
ConcurrentDictionary как DataSource для UI DataGrid
|
|||
---|---|---|---|
#18+
Всем привет! Есть свой класс "быстрого потокобезопасного списка" Код: c# 1. 2. 3. 4.
ConcurrentDictionary + INotifyCollectionChanged - нужна для работы внутренней логики, ну там много потоков, один "список", блокировки, быстрый поиск записи по Guid. Хочется чтоб этот список можно было использовать как источник данных для UI DataGrid, в том числе чтоб изменения оперативно отображались в UI и чтоб на каждый чих не вызывать - dataGridView1.DataSource = myList Проблема что MyList не работает как хотелось бы Отображается одна строка - Count/IsEmpty/Keys/Values Что нужно сделать чтоб, к примеру dataGridView1 видел его как ObservableCollection<MyItem>? чтоб данными для таблицы рассматривались Value словаря. какие интерфейсы реализовать? IBindingList? ICollection? IEnumerable? ...? или как-то по другому класс организовать? Код: c# 1. 2. 3. 4. 5.
Но как в этом варианте сделать чтоб снаружи списком виделось Value словаря? Какие будут мнения? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2019, 22:51 |
|
ConcurrentDictionary как DataSource для UI DataGrid
|
|||
---|---|---|---|
#18+
Кифирчик, может dataGridView1.DataSource = myList.Values хотя бы? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2019, 00:56 |
|
ConcurrentDictionary как DataSource для UI DataGrid
|
|||
---|---|---|---|
#18+
ViPRos, Values is ICollection и когда я меняю данные в словаре не хватает INotifyCollectionChanged чтоб UI Grid об этом узнал и обновился нужно после обновления данных постоянно дергать dataGridView1.DataSource = myList.Values ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2019, 08:22 |
|
ConcurrentDictionary как DataSource для UI DataGrid
|
|||
---|---|---|---|
#18+
Кифирчик, например так, ну и реализация нужна Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2019, 16:32 |
|
ConcurrentDictionary как DataSource для UI DataGrid
|
|||
---|---|---|---|
#18+
Кифирчик, второй вариант , наследовать наоборот от ObservableCollection а быстрый поиск сделать внутри ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2019, 16:36 |
|
ConcurrentDictionary как DataSource для UI DataGrid
|
|||
---|---|---|---|
#18+
pation, спасибо за наводки ) в общем наиболее простым вариантом оказалось наследоваться от BindingList<MyItem>, Dictionary спрятал внутри в таком варианте UI грид обновляется при изменении количества строк. но оставался вопрос с тем что грид не реагировал на изменения отдельных полей, на PropertyChanged никто не подписывался. как решение - при добавлении в коллекцию элемента я подписываюсь на его PropertyChanged и пробрасываю событие "наружу" списка, в коде UI контрола подписываюсь на него и вызываю Refresh у грида. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2019, 22:01 |
|
|
start [/forum/topic.php?fid=20&fpage=18&tid=1398880]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
67ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 165ms |
0 / 0 |