1

在我的应用程序中,只要将对象放在画布上,我就会将其存储在树中。现在,我正在尝试编写一个方法来删除一个对象,这很好,但我还需要从树中删除该特定对象。每个对象都有一个唯一的 id,因此我可以在树中找到它并从树中删除它,同时从画布中删除它。

为了在树中找到一个节点,我计划在每个节点(item.Tag)中存储 ID,但是,我面临两个问题:

  1. 如何从不同的类访问节点的详细信息? myTreeObj.Items.Tag 无法正常工作。

  2. 当我在树中循环时,myTreeObj.Items.Count 显示的项目比我看到的更多。

任何意见将不胜感激。

谢谢。

4

1 回答 1

0

在 WPF 中,TreeViews 实际上就是他们所说的:数据结构的视图。在 WinForms 中,您必须上下爬取 TreeView 的节点并手动添加或删除它们。在 WPF 中,正确的方法是从实际数据层次结构(TreeView 绑定到的数据层次结构)中添加或删除项目,并使用 PropertyChanged 或 CollectionChanged 通知来告诉 TreeView 自动更新自身。

你试图做的事情可能是可能的,但这将是一场艰苦的战斗,事情不会按预期进行。WPF 真的希望您使用数据绑定,而任何其他方法都会让您头疼。

这篇文章可能是开始了解如何使用 WPF TreeView 的一个有用的地方:http: //joshsmithonwpf.wordpress.com/2008/05/24/the-wpf-treeview-is-a-view-of-a-树/

编辑:作者的原始文章实际上更有帮助: http: //www.codeproject.com/Articles/26288/Simplifying-the-WPF-TreeView-by-Using-the-ViewMode

于 2012-06-29T18:05:44.467 回答