2010-04-28 68 views
0

可以说我有以下数据:WPF:是否可以使用绑定表达式来嵌套TreeView项目?

<XmlDataProvider x:Key="Values"> 
    <x:XData> 
    <folder name="C:"> 
     <folder name="stuff" /> 
     <folder name="things" /> 
     <folder name="windows"> 
     <folder name="system32" /> 
     </folder> 
    </folder> 
    </x:XData> 
</XmlDataProvider> 

我怎样才能像进入一个TreeView?我似乎无法分级绑定...

我知道我可以在C#代码中找到它,但我想用绑定表达式来实现它。

+0

我已经添加了艺术的链接应该帮助你使用XAML来完成这个任务。 – Charlie 2010-04-28 19:21:41

回答

5

编辑:没有看到你想只在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

+1

+1值得强调的是,xaml的重要部分是将HierarchicalDataTemplate的'ItemsSource'绑定到Folder对象的'Children'集合的地方......很好的答案:) – kiwipom 2010-04-28 19:19:02

+0

完美,谢谢。 – 2010-04-29 10:38:02