Zwiększenie wydajności WPF

3

Piszę aplikację w której w DataGridzie wyświetlam kilka tysięcy wierszy, w każdym z tych wierszy znajduje się kilka kontrolek + miniaturek obrazków. DataGrid jest przybindowany do ObservableList, często korzysta z konwerterów. Szukam sposobu na przyśpieszenie przewijania. Aktualnie zacina się leciutko, ale na nowiutkim komputerze. Na starszych jest dość duży problem. Zastosowałem UI Virtualization - działa wyśmienicie, próbowałem też DataVirtualization - nie rozumiejąc że służy do zmniejszenia ilości pamięci, a w efekcie do spowolnienia - zrezygnowałem. Poszukuję jeszcze jakiegoś sposobu by przyśpieszyć mój DataGrid, a w szczególności renderowanie w nim. Proszę o jakąś wskazówkę, co jeszcze mógłbym zrobić.

0

Chodzi o to, że wszystkie te rzeczy już zastosowałem, a i tak jest kiepsko. Szukam czegoś jeszcze bardziej wpływowego na renderowanie - może być czasochłonne(w znaczeniu, że ja będę musiał się napracować, coś samemu napisać, ale byle by był efekt).

0

Da się z tym coś zrobić? Piszę bo post spada, a problem wciąż istnieje. Szukam 'ekstremalnych' rozwiązań.

0

„ekskremalnym” rozwiązaniem będzie wyrzucić WPF w… błoto, a użyć czegoś mniej zasobożernego.

0

No, zawsze jakiś pomysł ;]. A tak sobie myślę, może głupio... Mój program ma taką specyfikację, że wielokrotnie wyświetlam ten sam obrazek w wierszach. Dało by się coś z tym zrobić - nie wiem, może niech wpf myśli(?) nad nim tylko raz, a wyświetla wielokrotnie? Spekuluję, bo nie wiem jak działa renderowanie i szukam czegokolwiek co by mnie czegoś nauczyło i ulepszyło program.

1
  1. Pomógłbym ci tylko sam kiepsko znam WPF ;)

  2. Te kilka tysięcy wierszy jest jednocześnie wyświetlanych na ekranie? Nic dziwnego że skoro w każdym wierszu jest kilka kontrolek to się przycina...

  3. Może spróbujesz napisać własnego DataGrida (omijającego te wszystkie warstwy abstrakcji i używającego DirectX do renderowania)? To jest bardzo ekstremalne rozwiązanie więc powinno Ci pasować...

0
MSM napisał(a)

Pomógłbym ci tylko sam kiepsko znam WPF

Doceniam :]

MSM napisał(a)

Te kilka tysięcy wierszy jest jednocześnie wyświetlanych na ekranie?

I tak i nie. Znajdują się w DataGridzie, który jest na ekranie, ale dzięki wirtualizacji renderowane są tylko te na które aktualnie przewinęliśmy. Mimo tego, wiele kontrolek, obrazków spowalnia dość uciążliwie.

MSM napisał(a)

Może spróbujesz napisać własnego DataGrida (omijającego te wszystkie warstwy abstrakcji i używającego DirectX do renderowania)

Taki pomysł mi się podoba - właśnie mam najdłuższe wakacje w życiu(co pewno niektórych irytuje ;)), więc czemu nie. Rozumiem, że powinno pomóc na pewno?

0
Rev napisał(a)

WPF też jest renderowany sprzętowo

Co masz na myśli? Chyba nie do końca rozumiem co znaczy być renderowanym sprzętowo i jaki ma to wpływ na aplikację.
Też - znaczy że co jeszcze?

1 użytkowników online, w tym zalogowanych: 0, gości: 1