编辑:没有看到你想只在XAML中做到这一点。 This MSDN文章应该帮助你。
HierarchicalDataTemplate
如果你的数据已经是分层的形式,那么它并不是那么糟糕。比方说,你用这样的代码,XML数据转换成一个模型类:
public partial class TreeViewHierarchy : Window
{
public ObservableCollection<Folder> Folders
{
get;
set;
}
public TreeViewHierarchy()
{
Folder system32 = new Folder() { Name = "system32" };
Folder windows = new Folder() { Name = "windows",
Children = new ObservableCollection<Folder>() { system32 } };
Folder things = new Folder() { Name = "things" };
Folder stuff = new Folder() { Name = "stuff" };
Folder c = new Folder() { Name = "C:",
Children = new ObservableCollection<Folder>() { stuff, things, windows } };
Folders = new ObservableCollection<Folder>() { c };
InitializeComponent();
}
}
public class Folder
{
public string Name
{
get;
set;
}
public ObservableCollection<Folder> Children
{
get;
set;
}
}
然后XAML为您TreeView
会是如此简单:
<Window x:Class="TestWpfApplication.TreeViewHierarchy"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="TreeViewHierarchy" Height="300" Width="300"
DataContext="{Binding RelativeSource={RelativeSource Self}}">
<TreeView ItemsSource="{Binding Folders}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}"/>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
而结果:
alt text http://img191.imageshack.us/img191/7841/treeviewhierarchy.png
我已经添加了艺术的链接应该帮助你使用XAML来完成这个任务。 – Charlie 2010-04-28 19:21:41