.net 自动生成自定义TreeViewItem的名称

.net 自动生成自定义TreeViewItem的名称,.net,wpf,visual-studio-2010,design-time,.net,Wpf,Visual Studio 2010,Design Time,我有一个从Treeview(自定义Treeview控件)派生的类所使用的从Treeview(自定义Treeview控件)派生的类。 当我的控件的用户使用默认的设计时集合编辑器将项添加到我的自定义树视图时,我希望新添加的项具有默认名称(如MyNode1、MyNode2等),并希望以XAML编写。 有什么办法吗? 我注意到,当您从工具箱中删除控件时,会为其指定一个默认名称。如果可能的话,我希望在Visual Studio 2010中为我的树节点类重用此现有机制。TreeViews和TreeViewI

我有一个从Treeview(自定义Treeview控件)派生的类所使用的从Treeview(自定义Treeview控件)派生的类。
当我的控件的用户使用默认的设计时集合编辑器将项添加到我的自定义树视图时,我希望新添加的项具有默认名称(如MyNode1、MyNode2等),并希望以XAML编写。
有什么办法吗?

我注意到,当您从工具箱中删除控件时,会为其指定一个默认名称。如果可能的话,我希望在Visual Studio 2010中为我的树节点类重用此现有机制。

TreeView
s和
TreeViewItem
s是用户界面控件,不应用于存储任何需要保存的信息。相反,您应该创建一个分层数据类型来存储信息,将其绑定到
TreeView.ItemsSource
属性,并提供一个
HierarchycalDataTemplate
来显示所需的数据


这样,只需将新数据类型对象添加到视图模型或代码隐藏中的绑定集合中,即可将新项添加到
TreeView
。在将对象添加到集合之前,您可以为对象指定任何值,并且可以随时从集合访问对象。

这肯定不是您需要的答案,但似乎很难。它可能意味着某种VS插件为您编写Name属性。顺便问一下,为什么在每个节点中都需要名称?在Blend中,有一个选项用于“在创建时自动命名交互元素”,但我认为Visual Studio没有同等的选项。为什么?如果您根据节点的名称对节点进行不同的处理,那么在创建节点时,您应该花时间指定Id或其他标识符。我正在编写一个自定义控件,希望我的用户能够通过代码按名称访问每个节点(就像在windows窗体中一样)。此外,我需要能够导入/导出树的内容。。。这就是它变得复杂的地方,因为我需要在每个节点中导出复杂的数据,而唯一可靠的重新导入方法是,如果我将所有节点命名为。Id也可以,但它也必须是控件XAML封装的一部分,就像名称一样。在一个正常的应用程序中,这是真的,但我面临的问题是编写一个自定义控件,它看起来像treeView,但具有额外的复杂功能。该功能与我的框架中的其他项相关。目标是我的控件的用户只需在他的页面上拖动它,设置一些属性,它就可以工作了。如果他必须做一些更高级的事情,那么他也可以编写一些代码,但大多数情况下,仅使用XAML/编辑器编辑控件就足够了。他不必担心复杂的细节,比如背后的HDT或数据模型。您确定需要对
TreeView
进行子分类吗?您可以使用
附加属性
创造奇迹。如果您感兴趣,请参阅此MSDN。从概念上讲,我不需要附加属性,因为我正在开发一个新控件(基于treeview),所以我还希望将旧控件保持在默认状态