Сообщение Filter в DataGrid - очень медленно! от 03.06.2021 15:05
Изменено 03.06.2021 17:40 Kolesiki
Filter в DataGrid - очень медленно!
Ребят, помогите пожалуйста с гридом — очень медленная фильтрация!
Что делаю (кусочки кода):
Далее какой-нть контрол меняет условие фильтрации, после чего я делаю
(что по идее должно те же данные перфильтровать)
Сам фильтр предельно простой: (obj) => obj.Property == true (к примеру). Ну то есть тормозить тут вообще нечему!
Что не нравится: КРАЙНЕ долгая фильтрация даже на 6 элементах!! Кликаю чекбокс, а список обновляется после секунды(!) фильтрации — почему так долго-то?? Подумаешь — Func сконструировал!
Вот не пойму, куда тут вообще копать. Может, грид можно как-то зафорсить "перефильтровать" чем-то помимо Refresh()? (если влиял именно он)
Что делаю (кусочки кода):
grid.ItemsSource = НекийИсточник List<T>
// параметр Func<T, bool> filter
var dataView = CollectionViewSource.GetDefaultView(grid.ItemsSource);
dataView.Filter = (obj) => filter((T)obj);
Далее какой-нть контрол меняет условие фильтрации, после чего я делаю
CollectionViewSource.GetDefaultView(grid.ItemsSource).Refresh()
(что по идее должно те же данные перфильтровать)
Сам фильтр предельно простой: (obj) => obj.Property == true (к примеру). Ну то есть тормозить тут вообще нечему!
Что не нравится: КРАЙНЕ долгая фильтрация даже на 6 элементах!! Кликаю чекбокс, а список обновляется после секунды(!) фильтрации — почему так долго-то?? Подумаешь — Func сконструировал!
Вот не пойму, куда тут вообще копать. Может, грид можно как-то зафорсить "перефильтровать" чем-то помимо Refresh()? (если влиял именно он)
Filter в DataGrid - очень медленно!
Ребят, помогите пожалуйста с гридом — очень медленная фильтрация!
Что делаю (кусочки кода):
Далее какой-нть контрол меняет условие фильтрации, после чего я делаю
(что по идее должно те же данные перефильтровать)
Сам фильтр предельно простой: (obj) => obj.Property == true (к примеру). Ну то есть тормозить тут вообще нечему!
Что не нравится: КРАЙНЕ долгая фильтрация даже на 6 элементах!! Кликаю чекбокс, а список обновляется после секунды(!) фильтрации — почему так долго-то?? Подумаешь — Func сконструировал!
Вот не пойму, куда тут вообще копать. Может, грид можно как-то зафорсить "перефильтровать" чем-то помимо Refresh()? (если влиял именно он)
PS
Делал и без всяких хелперов — прям с формы делал GetDefaultView, назначал фильтр — та же медленная петрушка, т.е. дело точно не в Func/лямбдах.
Что делаю (кусочки кода):
grid.ItemsSource = НекийИсточник List<T>
// параметр Func<T, bool> filter
var dataView = CollectionViewSource.GetDefaultView(grid.ItemsSource);
dataView.Filter = (obj) => filter((T)obj);
Далее какой-нть контрол меняет условие фильтрации, после чего я делаю
CollectionViewSource.GetDefaultView(grid.ItemsSource).Refresh()
(что по идее должно те же данные перефильтровать)
Сам фильтр предельно простой: (obj) => obj.Property == true (к примеру). Ну то есть тормозить тут вообще нечему!
Что не нравится: КРАЙНЕ долгая фильтрация даже на 6 элементах!! Кликаю чекбокс, а список обновляется после секунды(!) фильтрации — почему так долго-то?? Подумаешь — Func сконструировал!
Вот не пойму, куда тут вообще копать. Может, грид можно как-то зафорсить "перефильтровать" чем-то помимо Refresh()? (если влиял именно он)
PS
Делал и без всяких хелперов — прям с формы делал GetDefaultView, назначал фильтр — та же медленная петрушка, т.е. дело точно не в Func/лямбдах.