2009-05-18 16 views
7

Mamy serię prostokątów utworzonych wewnątrz obszaru roboczego i są one zagnieżdżone w tej kolejności ScrollView> Canvas> VirtualizingStackPanel> Rectangles in the XAML.WPF Wirtualizacja płótna

Wygląda na to, że niewiele informacji na temat Microsoftu jest o tym, co jest obsługiwane przez wirtualizację senarios, a w przypadkach, w których nie jest zgłaszany błąd, traktuje go po prostu jako standardowy StackPanel.

Biorąc pod uwagę, że nasz widok ma w przybliżeniu 60 prostokątów na ekranie w dowolnym momencie z łącznej liczby około 800 na całym płótnie, czas ładowania wynoszący około 5 minut jest niedopuszczalnie długi.

Próbowaliśmy już usunąć ScrollView bez efektu (poza usunięciem pasków przewijania, których wydajność się nie poprawiła) i usunięciem niektórych innych elementów zagnieżdżających, efektem netto wydaje się być albo nic nie jest wyświetlane, albo jest wyświetlany, ale wciąż wolny.

Najlepsze rozwiązanie, jakie znalazłem do tej pory przykładowy darmowy kod ware VirtualizedCanvas, ale jest bardzo ograniczony i nie obsługuje niczego zagnieżdżonego w nim, ale jedyne dane wejściowe, które pobiera, to zbiór elementów interfejsu użytkownika.

To rozwiązanie zasadniczo ignoruje wiązanie danych i wymaga przesłania do niego ukończonego Canvas, co powoduje, że cały nasz istniejący kod i konwertery są zupełnie bezużyteczne i mogą być głównymi poprawkami do wdrożenia.

Czy istnieje sposób, aby po prostu przyciąć Wirtualizację płótna, aby narysować tylko 60 elementów na ekranie?

Odpowiedz