Poprawa wydajności WPF DataGrid
W moim .NET 3.5
WPF
aplikacji, mam WPF
DataGrid
który będzie wypełniony 500 kolumnami i 50 wierszami.
Wydajność aplikacji jest bardzo słaba w przewijaniu, lub gdy robię DataGrid.Items.Refresh()
lub wybierając wiersze.
Faktycznie aplikacja zajmie około 20 sekund, aby zaktualizować układ. Layout_Updated()
zdarzenie zostanie wywołane po 20 sek.
Jak poprawić Wydajność?
4 answers
Istnieje kilka opcji, które możesz włączyć, aby pomóc ci w swoim DataGrid obiekcie
EnableColumnVirtualization = true
EnableRowVirtualization = true
Myślę, że ci dwaj są najważniejsi. Następnie spróbuj wykonać Wiązanie asynchroniczne
ItemsSource="{Binding MyStuff, IsAsync=True}"
I na koniec słyszałem, że ustawienie maksymalnej wysokości i szerokości może pomóc, nawet jeśli jest powyżej maksymalnego rozmiaru ekranu, ale sam nie zauważyłem różnicy (twierdzenie miało związek z automatycznym pomiarem rozmiaru)
MaxWidth="2560"
MaxHeight="1600"
Również nigdy nie umieszczaj DataGrid
w ScrollViewer
, ponieważ zasadniczo przegrasz wirtualizacja. Daj znać, jeśli to pomoże!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-25 21:19:25
Sprawdź czy masz Właściwość ScrollViewer.CanContentScroll
ustawioną False
.
Ustawienie tej właściwości na false wyłącza wirtualizację w sposób pogorszy wydajność siatki danych. Aby uzyskać więcej wyjaśnień, zapoznaj się z tym CanContentScroll
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-01 07:08:44
IsAsync = True} " jest szybszy po użyciu tego polecenia, aplikacja pobiera wiele rekordów w krótkim czasie, to działało dla mnie...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-01 20:13:06
Może spróbuj tego zamiast ładować wszystkie 50 wierszy na raz
Http://www.codeproject.com/Articles/34405/WPF-Data-Virtualization
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-07 14:06:06