WPF виртуализация холста

У нас есть ряд прямоугольников, созданных внутри Canvas, и они вложены в следующем порядке ScrollView> Canvas> VirtualizingStackPanel> Rectangles в XAML.

Похоже, что в Microsoft мало информации о том, в каких режимах поддерживается виртуализация senarios, и в тех случаях, когда не выдается ошибка, она просто обрабатывает ее как стандартную StackPanel.

Учитывая, что в нашем представлении на экране одновременно находится около 60 прямоугольников из общего количества около 800 на всем холсте, время загрузки около 5 минут является неприемлемо медленным.

Мы уже пытались удалить ScrollView безрезультатно (кроме удаления полос прокрутки, производительность которых не улучшилась) и удалив некоторые другие элементы вложенности, чистый эффект, кажется, либо ничего не отображается, либо отображается, но все еще медленный.

Лучшее решение, которое я нашел на данный момент, это образец бесплатного программного кода VirtualizedCanvas, но он очень ограничен и не поддерживает ничего, вложенного в него; фактически, единственный вход, который требуется, это набор элементов пользовательского интерфейса.

Это решение в основном игнорирует привязку данных и требует от вас передачи завершенного Canvas обратно, что делает весь наш существующий код и конвертеры довольно бесполезными, и это будет серьезной переработкой для реализации.

Есть ли способ просто обрезать Virtualize the Canvas, чтобы нарисовать только 60 элементов на экране?

Ответы на вопрос(1)

Ваш ответ на вопрос