TL; DR预先:我想为除WPF TreeView中特定几个节点以外的所有节点使用“默认”HierarchicalDataTemplate。这些节点来自XMLDocument,并且直到运行时才完全知道。有没有办法做到这一点?覆盖数据绑定中特定节点的默认模板(XML/XPath)TreeView
在运行时,我分析系统的特定部分,并建立一个XML文件,我则像这样绑定到一个TreeView:
MyTree.DataContext = MyXMLDocument;
这是我的TreeView的WPF声明:
<TreeView x:Name="MyTree" ItemsSource="{Binding Mode=OneWay, XPath=/Analysis}" ItemTemplate="{StaticResource GenericElementWithChildren}"/>
模板开始像这样...
<HierarchicalDataTemplate x:Key="GenericElementWithChildren" ItemsSource="{Binding XPath=child::node()}">
因此,例如,我可能有一些关于我刚刚运行的分析的不同方面的长XML文档,我希望像“Disk”或“Proprietary Foo Service”这样的特定元素拥有一个特殊的模板,因为它应该很好地显示,而其他所有内容都会得到一个通用的模板。
我想过使用DataTemplateSelector,但它似乎必须有更好的方法。我甚至不知道如何为XML做这件事。你们中的任何一个聪明人都有什么智慧可以传授吗?或者我想知道如何写一个DataTemplateSelector对抗XML?
嗯...如果你有比我更好的方式,我绝对有兴趣看到它。我新来绑定到XML。 – djdanlib
我决定使用DataTemplateSelector。我会将你的答案标记为已接受。 – djdanlib