У нас есть ряд прямоугольников, созданных внутри Canvas, и они вложены в следующем порядке. ScrollView> Canvas> VirtualizingStackPanel> Прямоугольники в XAML.
Похоже, что в Microsoft мало информации о том, в каких режимах поддерживается виртуализация senarios, и в тех случаях, когда не выдается ошибка, она просто обрабатывает ее как стандартную StackPanel.
Учитывая, что в каждый момент времени на экране отображается примерно 60 прямоугольников из общего количества около 800 на всем холсте, время загрузки около 5 минут является недопустимо медленным.
Мы уже пытались удалить ScrollView безрезультатно (кроме удаления полос прокрутки, производительность которых не улучшилась), и удалив некоторые другие элементы вложенности, чистый эффект, кажется, либо ничего не отображается, либо его отображается, но все еще медленно.
Лучшее решение, которое я нашел на данный момент, - это образец бесплатного программного кода VirtualizedCanvas, но он очень ограничен и не поддерживает ничего вложенного в него; фактически единственное входное действие - это набор элементов пользовательского интерфейса.
Это решение в основном игнорирует привязку данных и требует, чтобы вы передали ей завершенный Canvas, что делает весь наш существующий код и конвертеры довольно бесполезными, и это будет серьезной переработкой для реализации.
Есть ли способ просто обрезать виртуализацию холста, чтобы нарисовать только 60 наших элементов на экране?