WPF ItemsControl - 如何检测项目何时不可见
我正在构建一个 WPF 应用程序来可视化大量项目(几千个)。为此,我使用 ItemsControl,其中 ItemsSource 设置为 BindingList。
我注意到初始化屏幕需要一些时间...主要瓶颈是 TextBlock 元素的创建(项目的数据模板包含 4 个 TextBlock 元素)。一旦屏幕初始化(创建所有 WPF 元素时),渲染就非常正常了。
我已经实现了缩放和平移,因此我正在考虑使项目的外观依赖于缩放级别和中心点(有点像 Google 地图:数据仅针对视图中的区域进行可视化)。
这怎么能做到呢? WPF 中有什么方法可以询问项目或项目容器当前是否被剪裁?
I'm building a WPF application to visualize a load of items (a few thousand). For this i'm using an ItemsControl of which the ItemsSource is set to a BindingList.
I've noticed that it takes some time to initialize the screen... The main bottleneck is the creation of TextBlock elements (the data template of the items contains 4 TextBlock elements). Once the screen is initialized (when all WPF elements are created), rendering is quite OK.
I've implemented zooming and panning, so i was thinking about making the appearance of the items dependent on the zoom level and the center point (a bit like Google Maps: data is only visualized for regions that are into the view).
How can this be done? Is there any way in WPF to ask the item or item container if it is currently clipped?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以将您的列表虚拟化。这样,只有可见的项目才会为其创建 UI 控件。
检查 ListView 文档,或者此链接可能会有所帮助:
http://www.codeproject.com/KB/WPF/WpfDataVirtualization.aspx
乔吉
You can make your list virtualized. This way only the items that are visible will have UI controls created for them.
Check the ListView documentation, or this link may help:
http://www.codeproject.com/KB/WPF/WpfDataVirtualization.aspx
Jogy