TL; DR заранее: я хотел бы использовать HierarchicalDataTemplate «по умолчанию» для всех, кроме определенных нескольких узлов в WPF TreeView.Эти узлы происходят из XMLDocument и не полностью известны до времени выполнения.Есть ли способ сделать это?
Во время выполнения я анализирую определенные части системы и создаю документ XML, который затем привязываю к TreeView следующим образом:
MyTree.DataContext = MyXMLDocument;
Это мое объявление WPF для TreeView:
<TreeView x:Name="MyTree" ItemsSource="{Binding Mode=OneWay, XPath=/Analysis}" ItemTemplate="{StaticResource GenericElementWithChildren}"/>
Шаблон начинается следующим образом ...
<HierarchicalDataTemplate x:Key="GenericElementWithChildren" ItemsSource="{Binding XPath=child::node()}">
Так, например, у меня может быть какой-то длинный XML-документ о разныхаспекты анализа, которые я только что выполнил, и я бы хотел, чтобы какой-то конкретный элемент, такой как «Диск» или «Собственная служба Foo», имел специальный шаблон, потому что он должен отображаться красиво, а все остальное просто получает общий шаблон.
Я думал об использовании DataTemplateSelector, но похоже, что должен быть лучший способ.Я даже не уверен, как бы я это сделал для XML.У кого-нибудь из умных людей есть какая-то мудрость, или я застрял, пытаясь понять, как написать DataTemplateSelector против XML?