Посмотрите на конструктор Town, вы увидите, что он создает экземпляр Town, который снова вызывает себя, тем самым вводя бесконечный цикл.
Другими словами, каждый экземпляр Town содержит переменную Town, которая, в свою очередь, содержит переменную Town, для создания одного экземпляра Town потребуется миллиард лет и миллиард гигабайт ...
public Town town = new Town();
По сути то же самое, что и
Public Town town;
Public Town()
{
town = new Town(); //constructor calls itself
}
HeirarchicalDataTemplate используется точно для решения этого вида проблемы. Можно просто использовать простой шаблон как рев для достижения этого.
<HierarchicalDataTemplate DataType="Node" ItemsSource ="{Binding XPath=*}">
<TextBlock Text="{Binding XPath=@text}" />
</HierarchicalDataTemplate>