Mam (niezwirtualizowanych) ItemsControl, który wiąże swój ItemsSource z ObeservableCollection instancji ViewModel. Teraz po załadowaniu dużej ilości instancji modeli wszystkie kompilacje ViewModel muszą zostać dodane do tej ObservableCollection. Jak mogę dodać dużą liczbę ViewModels bez konieczności zawieszenia wątku interfejsu użytkownika?ItemsControl.ItemsSource MVVM performance
Przypuszczam, że wątek interfejsu użytkownika zawiesza się, ponieważ za każdym razem, gdy dodawana jest nowa pozycja, ItemsControl musi się aktualizować i układ itd. W kółko.
- powinienem zawiesić wiązanie dodać wszystkie elementy, a następnie wznowić? Jeśli tak to jak?
- powinienem zastąpić ObservableCollection na wdrożenie AddRange więc tylko 1 CollectionChanged zdarzenie jest zwolniony za dodanie wielu elementy? Lub alternatywnie po prostu wymienić całej kolekcji?
- Czy lepiej jest dodać osobno każdą pozycję i zadzwonić pod numer Dispatcher.Invoke dla każdej pozycji osobno? Tak więc często odblokowuję .
Jak radzisz sobie z dużymi listami dynamicznymi, których nie można zwirtualizować?
Czego używasz? WPF/Silverlight? WinForms? Coś innego? – slugster
Powinno być oczywiste, że nie są to formularze systemu Windows, ponieważ żadna z wymienionych klas nie istnieje w formularzach okien. – bitbonk
Czy istnieje jakiś szczególny powód, dla którego twoja kontrola przedmiotów nie może korzystać z wirtualizacji interfejsu użytkownika? –