是否可以在TreeView控件的每个项目中存储一些数据?我的意思是,除了标题文本之外还有一些有用的东西(例如字符串) 感谢。
答案 0 :(得分:3)
是的,WPF是"无形",因此您的实际数据可以是您想要的任何数据,而TreeView
只是用于显示数据的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(视图)只是一个漂亮的层,它位于你的类之上,使它们对用户友好。
从WinForms TreeView切换到WPF TreeView时,这是一个重要的概念
答案 1 :(得分:1)
这取决于商店数据的含义......
如果您只是在谈论UI自定义Rachel上面的答案是有效的。
如果您正在讨论存储任意对象值(例如有关TreeViewItem的信息),或者可能是两个项之间的关系,则可以使用TreeViewItem的Tag属性。例如,我必须编写一个映射UI,其中两棵树链接在一起,其中来自第一棵树的每个TreeViewItem可以连接到第二棵树的1个TreeViewItems。我使用第一个TreeViewItem的Tag属性来存储连接的TreeViewItem。