Я действительно взломал его ... Ключ должен был использовать
<HierarchicalDataTemplate.ItemsSource>
<Binding XPath="child::node()[@id]" />
</HierarchicalDataTemplate.ItemsSource>
, который отфильтровывает любой узел без атрибута id, и триггер, такой как
<HierarchicalDataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=NodeType}" Value="Element">
<Setter TargetName="tb" Property="Text" Value="{Binding XPath=title}" />
</DataTrigger>
</HierarchicalDataTemplate.Triggers>
, где tbэто простое текстовое поле.