WPF TreeView问题

时间:2011-09-20 16:56:25

标签: wpf treeview treeviewitem

是否可以在TreeView控件的每个项目中存储一些数据?我的意思是,除了标题文本之外还有一些有用的东西(例如字符串) 感谢。

2 个答案:

答案 0 :(得分:3)

是的,WPF是"无形",因此您的实际数据可以是您想要的任何数据,而TreeView只是用于显示数据的Template用户以预先确定的方式。

您可以将Template的任何部分覆盖为您想要的任何部分,并且/或者根据需要将其绑定到您的数据。

修改

我没有使用TreeView的专家,但如果您的DataContext为List<Folder>,并且每个Folder对象都有NameFullPath属性,您的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。