WPF DataGrid velmi pomale skrolovanie   otázka

WPF

Zdravim.

Potrebujem zobrazovat len jednoduchu tabulku v Datagride. Tabulka ma 1604 riadkov a 11 stlpcov a pri skrolovani obraz velmi trha, strasne pomaly to prekresluje. Na WinFormoch toto islo bez problemov.

DataGrid mam definovany takto:

<DataGrid Grid.Row="1" AutoGenerateColumns="True" HorizontalAlignment="Stretch" Margin="0,0,0,0" Name="_dgData" VerticalAlignment="Stretch" 
                  EnableColumnVirtualization="True" EnableRowVirtualization="True" CanUserAddRows="False" CanUserDeleteRows="False" 
                  CanUserReorderColumns="False" CanUserResizeRows="False" IsReadOnly="True"/>

A naplnam ju nasledovne:

_dgData.ItemsSource = dataTable.DefaultView;

Skusal som uz rozne nastavenia gridu ale vykon sa nezlepsil...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Vidím spoustu hovadských nastavení, zkusil bych nejdřív čistý <DataGrid></DataGrid> a hlavně bez AutoGenerateColumns.

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Tie nastavenia specifikuju vlastnosti datagridu a AutoGenerateColumns mi nezvysi vôbec vykon.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Vyzkoušel jste co jsem psal? Ano nebo ne? Podle těch atributů jste pouze v návrháři zoufale klikal na vše, co vám připadalo související s daným problémem aniž byste věděl k čemu to je.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Skusal som vsetko. Skusal som si generovat sam stlpce a vobec to nema vplyv a ani nevidim dovod preco by malo. Tie nastavenia som pisal ja a vsetky su tam lebo maju vyznam. Pri WPF dizajner nepouzivam. Ovladate vobec WPF? Lebo mam pocit podla Vasho vyjadrenia, ze nie.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Problém se vyskytuje vždy, ať už je program spuštěn na libovolném PC či OS?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Teraz som skusal v praci na desktope s i5 a OS Win 8.1 a tu to "neseka" pri scrollovani skoro vobec aj ked mam 10000 riadkov. Doma to skusam na NB s Win 7 a s HW Pentium B970 2.3GHz + HD7650M, ale myslim, ze vykon by mal byt dostatocny nakolko vytazenie CPU nieje vysoke. Mam doma aj vykonny desktop, skusim este tam.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Proč generovat sloupce sám?! Stačí je napevno deklarovat v XAML včetně datové vazby. Nevykládejte že všechna ta nastavení mají význam, protože např *Virtualization má True jako výchozí hodnotu. Jistě (a bohužel) WPF ovládám, vytvářím v něm poměrně rozsáhlý projekt, na který už Windows Formsům dochází dech. Čím déle s tím pracuji, na tím více zkurveností v tom WPF narážím. Proto jsem také radil nejprve vyzkoušet holý základ (ideálně v čistém projektu), protože ve WPF má vliv všechno na všechno. Vypadá to ale, že váš problém bude spíše v datovém zdroji a v tom případě bych vyzkoušel jako zdroj použít primitivní datové typy ve stejném množství a ne nějaké přerostlé věci z DataTable.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Skusal som naozaj vsetko aj List vs DataTable a aj deklarovat stlpce. Prisiel som na to, ze od poctu riadkov moc nezalezi. Aj ked som mal len 200 riadkov a dataGrid som mal na FullHD monitore tak to proste seka. Cim je dataGrid mensi tym je vykon lepsi. Jednoducho povedane, ako keby PC mal problem rendrovat dataGrid, vytazenie CPU pri skrolovani prudko narasta az na takmer 100%.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

zkuste:

ScrollViewer.CanContentScroll na false.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback