我有一些xml:
<Test>
<thing location="home" status="good"/>
<thing location="work" status="bad"/>
<thing location="mountains" status="good"/>
</Test>
TreeView
上的叶子是status属性的值;节点将是location属性的值。
├──bad
│.....└──work
└──good
.......├──home
.......└──山脉
目前,我手动填充TreeView
(或TabControl
),遍历xml,将节点添加到相应的叶子中。
这可以通过数据绑定完成吗?我猜测转换器会涉及......
谢谢你的任何建议。
答案 0 :(得分:1)
我一直在寻找相同类型的信息,并发现Stack Overflow上的this question非常有帮助。您只需指定XmlDataProvider和一些HierarchicalDataTemplate元素。然后,一些带有XPath属性的简单数据绑定将它们整合在一起。查看上面的链接了解更多详情。
答案 1 :(得分:0)
假设您要绑定到XmlDataSource,您可以使用具有以下内容的TransformFile:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/Test">
<Test>
<good>
<xsl:for-each select="thing[@status='good']">
<xsl:element name="{@location}"/>
</xsl:for-each>
</good>
<bad>
<xsl:for-each select="thing[@status='bad']">
<xsl:element name="{@location}"/>
</xsl:for-each>
</bad>
</Test>
</xsl:template>
</xsl:stylesheet>
向XmlDataSource添加XPath="/Test/*"
属性以删除“Test”根元素。