所以我有一个绑定到动态加载的 xml 文件的树视图。
然后,在另一个面板中,我有一个绑定到 TreeViewItems 的列表视图。
行为是当用户单击树中的项目时,任何属性或文本都会显示在 ListView 中。
给定以下 xml
<Root>
<Child Name="Attribute">
<!--Comment-->
<Content>Some text</Content>
</Child>
</Root>
我把这个放在我的树上,这正是我想要的。
这是我用来将 TreeViewItems 绑定到 ListView 的绑定
<Binding XPath="@*|text()|comment()" />
这按预期工作,但不是我想要的:)。
它将注释呈现为其父级的属性,因此如果我单击树节点Child
,我将同时看到Content
和Comment
。
但是,如果我单击Comment
树中的节点本身,我什么也得不到
这不是我想要的。我更喜欢如果我点击Child
节点,我只会得到属性和文本——而不是commnets,但是如果我点击Comment
节点,那么我应该在 ListView 中看到评论的值。
我很确定秘诀在于 xPath 诡计,但我一直没能把它弄好。
将绑定更改为
<Binding XPath="@*|text()|//comment()" />
将 Comment 的值添加到Comment
节点(好),但也添加到树中的每个其他节点(坏)。我试过在not()
绑定上加入一些条件,但无济于事。
将绑定更改为
<Binding XPath="@*|text()|../comment()" />
更接近,因为它随后将评论正确绑定到评论节点,但也绑定到包含评论的节点的任何其他子节点。
我需要的(我认为)是某种将其更改为类似的方式
<Binding XPath="@*|text()|../comment()[not(NodeType != Comment)]" />
也就是说,如果当前上下文节点是评论,则仅选择此评论。但是这个例子失败了。
在这一点上,我只是在随机尝试,所以我想是时候问了:)
任何人都可以提出一个可以完成我(希望充分)描述的绑定吗?