XML数据绑定到TreeView(或Tab控件),根据不同的属性绑定属性

发布于 2024-08-02 03:51:35 字数 514 浏览 5 评论 0原文

我有一些 xml:

<Test>
  <thing location="home" status="good"/>
  <thing location="work" status="bad"/>
  <thing location="mountains" status="good"/>
</Test>

TreeView 上的叶子是 status 属性的值; 节点将是位置属性的值。

├──不好
│.....└──工作
└──好
......├──家
.......└──mountains

目前,我手动填充 TreeView (或 TabControl),迭代 xml,将节点添加到适当的叶子。
这可以通过数据绑定来完成吗? 我猜会涉及转换器......
感谢您的任何建议。

I have some xml:

<Test>
  <thing location="home" status="good"/>
  <thing location="work" status="bad"/>
  <thing location="mountains" status="good"/>
</Test>

The leaves on the TreeView are the values of the status attribute; the nodes will be the value of the location attribute.

├──bad
│.....└──work
└──good
.......├──home
.......└──mountains

Currently, I populate the TreeView (or TabControl) manually, iterating through the xml, adding the nodes to the appropriate leaf.
Can this be done via databinding? I'm guessing a Converter will be involved...
Thanks for any advice.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情释 2024-08-09 03:51:35

假设您要绑定到 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>

XPath="/Test/*" 属性添加到 XmlDataSource 以删除“Test”根元素。

Assuming you are going to bind to an XmlDataSource you could use a TransformFile with the following contents:

<?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>

Add an XPath="/Test/*" property to the XmlDataSource to remove the "Test" root element.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文