2011-12-29 3 views
2

Я сгенерировал XDocument в коде позади, как показано ниже:Различные связыванию подход на каждом уровне Treeview

<Root> 
    <Pubs> 
    <Book id='A123'> 
     <Author state='AS'>Moreno</Author> 
    </Book> 
    <Book id='B456'> 
     <Author state='BS'>Gazit</Author> 
    </Book> 
    </Pubs> 
</Root> 

и хотите, чтобы связать это с Treeview управления в WPF приложение, чтобы иметь что-то вроде этого:

+ Pubs    //Pubs Element Name 
    + A123   //Book Element Attribute Value 
    + Moreno  //Author Element Inner text 
    + B456 
    + Gazit 

так, что является лучшим решением?

ответ

2

Это ответ:

Для каждого уровня TreeView мы должны определить конкретную HierarchicalDataTemplate в TreeView.Resources с:

  1. DataType = Имя элемента
  2. ItemsSource имя = связывание ребенка

например, как bel ow:

<TreeView Name="treeView2" ItemsSource="{Binding Path=Root.Elements}"> 
      <TreeView.Resources> 

       <HierarchicalDataTemplate DataType="Book" ItemsSource="{Binding Path=Elements}" x:Key="template1"> 
         <TextBlock Text="{Binding Path='Attribute[id].Value'}"/> 
       </HierarchicalDataTemplate> 

       <HierarchicalDataTemplate DataType="Pubs" ItemsSource="{Binding Path=Elements}" x:Key="template2"> 
         <TextBlock Text="{Binding Path='Name'}"/> 
       </HierarchicalDataTemplate> 

       <HierarchicalDataTemplate DataType="Author" x:Key="template3"> 
         <TextBlock Text="{Binding Path='Attribute[state].Value'}"/> 
       </HierarchicalDataTemplate> 

     </TreeView.Resources> 
    </TreeView> 

и все в порядке!

4

Вы должны десериализовать каждый из этих элементов в соответствующий объект, а затем построить иерархию деревьев из наблюдаемых коллекций.

Вы должны прочитать о WPF TreeView с использованием MVVM. Этот учебник является довольно хорошо -

http://www.codeproject.com/KB/WPF/TreeViewWithViewModel.aspx

+0

В этом учебнике не говорится о различных привязках к каждому уровню! – ARZ

+0

Нет, это учебник о разных шаблонах для каждого уровня. Во втором демо вы можете видеть, что каждый уровень имеет разные значки и что несколько шаблонов были определены. HierarchicalDataTemplate определен для RegionViewModel, StateViewModel и CityViewModel. – Dror

2

Определения в вашем (управлении или окно или приложение) ресурсах в DataTemplate, имеющую книгу, как ТипДанные и связывание TreeView в список книги может сделать эту работу.

+0

Как насчет элементов «Пабы» и «Автор»? Есть ли образец кода !? – ARZ

Смежные вопросы