Вы пытались использовать довольно простую структуру, включая ObservableCollection <> для дочерних узлов? Что-то, что могло бы реализовать интерфейс:
interface ITreeNode<T>
where T : ITreeNode
{
string Name { get; set; }
ObservableCollection<T> Children { get; }
}
Затем вы можете использовать HeirarchicalDataTemplate для XAML вашего TreeView:
<TreeView ItemsSource="{Binding MyTree}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}"/>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
Вам придется самостоятельно перетаскивать, но это должно заставить вас начать все отображать.
Я только недавно должен был сделать вышеперечисленное сам, и эта статья CodeProject помогла мне, на случай, если вам понадобится больше: http://www.codeproject.com/KB/WPF/TreeViewWithViewModel.aspx
Обновление:
Поскольку в настоящее время у вас есть все в табличном формате, и я предполагаю, что вы не захотите пересматривать структуру данных по умолчанию, используйте IValueConverter, чтобы получить нужные элементы. Этот код не проверен, но я бы попробовал что-то похожее на следующее:
{Binding Index, Converter={StaticResource myConverter}}
Когда вы объявляете myConverter, дайте ему ссылку на ваши табличные данные. Используя индекс в качестве значения и имея ссылку на таблицу, вы можете вернуть из метода convert IEnumerable с соответствующими результатами.
Дайте мне знать, если вам нужно больше деталей.