所以我有一个绑定到动态加载的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)]" />
也就是说,只选择此注释,当前上下文节点是注释。 但这个例子失败了。
此时我只是随意尝试,所以我觉得是时候问了:)
有人可以建议一个能够完成我所拥有的(希望充分)描述的绑定吗?
答案 0 :(得分:4)
试试这个:
<Binding XPath="@*|text()|self::comment()" />