0

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

4

2 回答 2

3

是的,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 时的一个重要概念

于 2011-09-20T16:59:48.647 回答
1

这取决于您所说的存储数据的含义...

如果您只是在谈论 UI 定制,Rachel 上面的回答很有效。

如果您正在谈论存储任意对象值,例如有关 TreeViewItem 的信息,或者可能是两个项目之间的关系,您可以使用 TreeViewItem 的 Tag 属性。例如,我必须编写一个映射 UI,其中两棵树链接在一起,其中第一棵树的每个 TreeViewItem 可以连接到第二棵树的 1 个 TreeViewItem。我使用第一个 TreeViewItem 的 Tag 属性来存储连接的 TreeViewItem。

于 2011-09-20T17:05:31.783 回答