WPF ItemsControl - 如何检测项目何时不可见

发布于 2024-10-18 03:34:33 字数 321 浏览 3 评论 0原文

我正在构建一个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

挽手叙旧 2024-10-25 03:34:33

您可以将您的列表虚拟化。这样,只有可见的项目才会为其创建 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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文