2013-02-19 19 views
5

Mam DataGrid, który ma DataTable ustawiony jako jego ItemsSource. DataTable zawiera 24 kolumny i ~ 1600 wierszy (faktycznie będę musiał załadować dużo więcej wierszy później, ale na razie jest to wystarczająco kłopotliwe).Wirtualizacja WPF DataGrid nie działa poprawnie?

Pomimo ustawienia wirtualizacji dla aktywnych kolumn i wierszy, DataGrid potrzebuje około 30 sekund na wyświetlenie 1600 wierszy. Po tym przewijanie w pionie działa dobrze, poziomo jest opóźnione, chociaż można oczekiwać, że będzie odwrotnie.

Po uruchomieniu profilera pamięci mogę sprawdzić, czy większość pamięci używanej przez aplikację pochodzi z DataGridCells, Borders, ContentPresenters i Textblocks. Dla mnie oznacza to, że siatka nie wykonuje poprawnie wirtualizacji wierszy.

Czy ktoś może potwierdzić, że wystąpił problem z wirtualizacją DataGrid? Czy istnieje jakaś niesławna pułapka w implementacji tej kontroli?

Czekamy na wszelkiego rodzaju dane wejściowe/sugestie. Dzięki :)

+0

Czy wszystkie kolumny są kolumnami standardowymi, a więc tylko tekstowymi lub niektóre z nich zawierają elementy sterujące, takie jak 'CheckBoxes' itp? – DHN

+0

Nie, dwa z nich to pola wyboru. –

+0

Hmm, a następnie spróbuj i usuń te dwie kolumny lub zmień ich wygląd na "standardowy". – DHN

Odpowiedz

5

Rozwiązałem problem. My DataGrid siedział wewnątrz ScrollViewer, w którym rozciągał się w nieskończoność. Więc nabrał przekonania, że ​​wszystko jest widoczne, dlatego nie wirtualizowałby swoich elementów. Usunąłem ScrollViewer (DataGrid ma własne paski przewijania i tak działa) i działa teraz bezbłędnie.

1

Hmm, ok Nie wiem dlaczego, ale oczywiście muszę dodać trochę tekstu z klejem, aby opublikować odpowiedź tutaj. Być może ten SO answer Ci pomoże.

Edit

Jako dodatkowa rada Chciałbym polecić Ci myśleć o swoim podejściu. Czy naprawdę konieczne jest dodanie 1.6k + elementów do DataGrid? Być może powinieneś pomyśleć o odroczeniu ładowania.

+1

Tak, myślałem o tym. O dziwo, WinForm DataGrid wydaje się działać poprawnie. –

+0

OK, a co z linkiem w odpowiedzi? – DHN

+0

Checkboxes nie wydają się być problemem. Usunięcie wspomnianych kolumn nie rozwiązało problemu. –