2011-09-20 102 views
0

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

回答

1

这取决于你的意思是存储数据什么的时候这是一个很重要的概念...

如果你只是说上述UI定制Rachel的答案作品。

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

+0

谢谢,标签是我所需要的 – dpreznik

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(Views)只是一个漂亮的图层,它位于你的类的顶部,以方便用户使用。

从一个WinForms树视图切换到WPF的TreeView

+0

谢谢,但请你给我一个简单的例子,如何分配一个字符串转换为树型视图?我明白如何分配标题文本,但仅此而已。我对WPF很陌生。 – dpreznik

+0

我添加了一个例子,虽然我觉得Josh的答案是更好,如果你不使用MVVM – Rachel

+0

谢谢你瑞秋。我必须学习很多,甚至不知道从什么开始:) – dpreznik