是否可以在 TreeView 控件的每个项目中存储一些数据?我的意思是,除了标题文本之外还有一些有用的东西(例如字符串)?谢谢。
2 回答
是的,WPF 是“无外观的”,因此您的实际数据可以是您想要的任何内容,并且 aTreeView
只是Template
用于以预定方式向用户显示数据。
您可以将其中的任何部分覆盖Template
为您想要的任何部分,和/或根据需要将其绑定到您的数据。
编辑
我不是使用 TreeView 的专家,但是如果您有一个 DataContext List<Folder>
,并且每个Folder
对象都有一个Name
和一个FullPath
属性,那么您的 TreeView 可能看起来像这样:
<TreeView ItemsSource="{Binding MyFolderList}">
<TreeView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"
ToolTip="{Binding FullPath}" />
</DataTemplate>
</TreeView.ItemTemplate>
</TreeView>
如果您还没有,我强烈建议您在使用 WPF 时查看 MVVM 设计模式。基本上,您的应用程序就是您的类 (ViewModels),而 Controls/XAML (Views) 只是位于类之上的一个漂亮层,以使它们对用户友好。
这是从 WinForms TreeView 切换到 WPF TreeView 时的一个重要概念
这取决于您所说的存储数据的含义...
如果您只是在谈论 UI 定制,Rachel 上面的回答很有效。
如果您正在谈论存储任意对象值,例如有关 TreeViewItem 的信息,或者可能是两个项目之间的关系,您可以使用 TreeViewItem 的 Tag 属性。例如,我必须编写一个映射 UI,其中两棵树链接在一起,其中第一棵树的每个 TreeViewItem 可以连接到第二棵树的 1 个 TreeViewItem。我使用第一个 TreeViewItem 的 Tag 属性来存储连接的 TreeViewItem。