Различный обязательный подход на каждом уровне Treeview - PullRequest
2 голосов
/ 29 декабря 2011

Я сгенерировал XDocument с кодом ниже, как показано ниже:

<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

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

Ответы [ 3 ]

4 голосов
/ 29 декабря 2011

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

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

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

2 голосов
/ 01 января 2012

Это ответ:

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

  1. DataType = имя элемента
  2. ItemsSource = обязательное дочернее имя

, например, как показано ниже:

  <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>

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

2 голосов
/ 30 декабря 2011

Определение в ваших ресурсах (элемента управления, окна или приложения) DataTemplate с Book в качестве DataType и привязка TreeView к вашему списку Book может сделать эту работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...