Заполнить wpf treeview с помощью mvvm

#wpf

#wpf

Вопрос:

У меня есть таблица с именем customer с файлами (ID, Name, Code, FatherID). Поля (ID) и (FatherID) соединены вместе.

я получаю список клиентов в mvvm (AllCustomer)

       public  ViewModelList(CRMEntities crm)
    {
        var all = from h in crm.Customer
                  select h;
        AllCustomer = new ObservableCollection<Customer>(all.ToList());
    }

    public ObservableCollection<Customer> AllCustomer
    {
        get;
        set;
    }
  

/* xml-файл

         <TreeView Name="folderTree"
     ItemsSource="{Binding AllCustomer}">

        <TreeView.ItemTemplate>
            <HierarchicalDataTemplate ItemsSource="{Binding AllCustomer}"
                             DataType="{x:Type cls:Customer}">

                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding Name}" />
                </StackPanel>

            </HierarchicalDataTemplate>
        </TreeView.ItemTemplate>

    </TreeView>
  

я хочу заполнить treeview, который отображает всех клиентов как отца сына!

Кем я могу заполнить treeview с клиентами, с помощью mvvm?
Моя модель клиента

Комментарии:

1. Важно знать имя дочернего отношения (что-то вроде ChildCustomers ), откройте конструктор Entity Framework, он должен содержать это имя в разделе свойств навигации.

2. в таблице customer у меня есть fatherid, который ссылается на идентификатор

3. Не будет достаточно только идентификатора. Вам нужно будет заполнить список дочерних элементов под каждым Customer public class Customer { public ObservableCollection<Customer> ChildCustomers { get { return childCustomers; } } }

4. мой treeview может иметь несколько этапов. кажется, я должен создать отдельный класс для каждого дочернего элемента. верно?

5. @niloo Если вы используете Entity Framework, у вас будет аналогичная диаграмма, как на этом рисунке: dl.dropbox.com/u/8047386/customer table sample.PNG . Есть 2 свойства навигации, добавьте в свой пост информацию об их именах в вашей модели.