2010-04-28 59 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