几年前,我用Java编写了一个图形应用程序。它将边和顶点存储在QuadTree中,每当我必须绘制它时,我会遍历它。
今天我需要在WPF中做类似的事情,但是,我注意到我必须在面板中的Children列表中添加元素才能绘制。这是低效的,因为现在我有效地存储了两个版本的数据。与使用四叉树相比,删除元素也是昂贵的。
有没有更好的方法来实现这一点而无需使用儿童列表?
答案 0 :(得分:0)
在WPF中,如果您有数据源,通常不会直接使用面板,而是使用一些ItemsControl
,绑定其ItemsSource
,将ItemsPanel
设置为您想要的任何面板使用,并创建一个ItemTemplate
来定义项目的显示方式。 (Canvas
binding example)
这种使用面板的方式意味着您没有手动处理Children
集合,如果ItemsSource
实现INCC
它将保持同步。我意识到这对你的树木来说可能有点困难,但也许你可以想出一些东西。