Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF中更新treeview控件_C#_Wpf - Fatal编程技术网

C# 在WPF中更新treeview控件

C# 在WPF中更新treeview控件,c#,wpf,C#,Wpf,在我的应用程序中,当一个对象被放到画布上时,我将它存储在一棵树中。现在,我正在尝试编写一个方法来删除一个对象,这很好,但是我还需要从树中删除那个特定的对象。每个对象都有一个唯一的id,这样我就可以在树中找到它,并在从画布中删除时将其从树中删除 为了在树中找到一个节点,我计划在每个节点(item.Tag)中存储ID,但是,我面临两个问题: 如何从其他类访问节点的详细信息?myTreeObj.Items.Tag无法正常工作 当我在树中循环时,myTreeObj.Items.Count会显示更多我所看

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

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

  • 如何从其他类访问节点的详细信息?myTreeObj.Items.Tag无法正常工作

  • 当我在树中循环时,myTreeObj.Items.Count会显示更多我所看到的项目

  • 如有任何意见,将不胜感激


    谢谢。

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

    你想做的也许是可能的,但这将是一场艰苦的战斗,事情不会如预期的那样成功。WPF确实希望您使用数据绑定,任何其他方法都会让您头疼

    本文可能是了解如何使用WPF TreeView的一个有用的起点:

    编辑: 作者的原创文章实际上更有帮助:

    你说得对。现在是我理解这个概念的时候了。MVVM是这个过程的一部分吗?谢谢大家!@amitkohan-很难从WinForms过渡到WPF,因为WPF同时引入了很多新概念。它有助于将用户界面视为只与ViewModel挂钩的愚蠢的东西。ViewModel是一切实际发生的地方,但以一种非常抽象的方式。这个主题太复杂了,无法在stackoverflow评论流中讨论,但是上面第二篇引用的文章应该可以帮助您开始。是的,没错,但是在我阅读关于CodeProject的文章之前,我遇到了这个链接,希望能给我一个简单/快速的教程,但是,它似乎不完整。。。如今,找到一篇好的WPF文章,甚至是一步一步的例子都很难。完成后,我收到一个错误,因为可访问性不一致:基类“System.Collections.ObjectModel.ObservableCollection”的可访问性不如类“myWPFTree.Nodes”的可访问性。请尝试将myWPFTree.Nodes类公开。(如果未定义辅助功能级别,则默认为内部)此外,如果使用.NET 3.5,请确保在ViewModel中引用WindowsBase程序集。ObservableCollection是在.NET 4之前的WindowsBase程序集中定义的。