将WPF树视图绑定到包含过滤器

时间:2016-05-26 22:29:47

标签: c# xml wpf xpath treeview

我尝试根据xpath查询的输出创建WPF树视图。这个想法是,基于搜索字符串,将呈现表示非常大的xml文档的微小子集的树视图。 WPF和xpath对我来说是全新的(几周),所以可能是一个愚蠢的问题......

在控制台应用程序中,这样可以正常工作,并提供我想要的树作为基础。

XmlNodeList nodeList = root.SelectNodes("//item[not (item) and contains(name, 'kidney')]//ancestor::item");

foreach (XmlNode node in nodeList)
{
    file.WriteLine($"{node.ChildNodes[0].InnerText}");

    //Console.WriteLine($"{node.Name} -  {node.InnerText}");
}

但是,当我在绑定中使用相同的xpath时,如下所示:

ItemsSource="{Binding Source={StaticResource xmlDataProvider}, XPath=//item[not (item) and contains(name, 'kidney')]//ancestor::item}"

我在xpath片段的构造周围遇到了一堆或错误(xpath = / *工作正常)。我认为它可能是单引号,但替换为XML特殊字符或转义为\没有区别。在这个阶段,我想知道是否可以使用嵌套的xpath语句?

1 个答案:

答案 0 :(得分:0)

尝试在XPath绑定参数中转义',如下所示:

XPath=//item[not(item) and contains(name, \'kidney\')]//ancestor::item

类似问题:Error in XPath binding in XAML