我们在 Canvas 中生成了一系列矩形,它们在 XAML 中以 ScrollView>Canvas>VirtualizingStackPanel>Rectangles 的顺序嵌套。
微软似乎很少有关于在什么情况下支持虚拟化的 senarios 信息,并且在不是没有抛出错误的情况下,它只是将其视为标准 StackPanel。
鉴于我们的视图在任何时候在屏幕上大约有 60 个矩形,而整个画布上总共有大约 800 个矩形,所以大约 5 分钟的加载时间慢得让人无法接受。
我们已经尝试删除 ScrollView 无效(除了删除滚动条性能没有提高),并删除一些其他嵌套元素,最终效果似乎是什么都不显示,或者它显示但仍然减缓。
到目前为止,我找到的最好的解决方案是一段免费的软件代码 VirtualizedCanvas,但它非常有限,不支持嵌套在其中的任何内容,实际上它需要的唯一输入是 UI 元素的集合。
该解决方案基本上忽略了数据绑定,并要求您将完成的 Canvas 传回给它,这会使我们所有现有的代码和转换器变得毫无用处,并且将是重大的返工来实现。
有没有办法简单地剪辑 Virtualize the Canvas 只在屏幕上绘制 60 个项目?