Зе Ошибка здесь
<DataTemplate DataType="x:Type local:Segment"> <!-- doesn't work -->
должно быть
<DataTemplate DataType="{x:Type local:Segment}">
Пришел домой ... сделал игрушечный образец, и это сработало с этим изменением. Должен попробовать это @ работа завтра. Sheesh .. из-за отсутствия 2 завитков ..
Обновление : Обнаружил еще одну ошибку
<DataTemplate x:Key="SegTemplate" DataType="{x:Type local:Segment}"> <!-- doesn't work -->
не будет работать. Похоже, вы можете получить его либо с атрибутом Key OR DataType. Чтобы этот типизированный шаблон данных работал .. пришлось удалить атрибут Key, и теперь он работает как положено. Поведение согласуется и с HierarchicalDataTemplate.
<DataTemplate DataType="{x:Type local:Segment}">