重构WPF数据绑定:从XmlDocument + XPath到XElement

时间:2016-02-19 01:38:29

标签: c# wpf xaml xpath

我有一堆代码使用XPath属性来处理数据绑定到XMLDocument。我想从我的程序中删除XMLDocument并使用XDocument和XElement以及LINQ。 (目前的程序是一个使用两者的混乱。)

有没有办法可以通过绑定到XElement来替换我的XAML中的数据绑定,而不必重写所有绑定表达式?我想解决方案将使用XPathSelectElement(s),但我不清楚如何。

理想情况下,我使用像

这样的代码
this.DataContext = xElement;

并保持或轻微改变

<TextBox Text="{Binding XPath=path/to/child/@field}" />

重要提示:这与TextBox无关。我有更复杂的UserControls,用XPath绑定构建自己。

研究: Bind XDocument to WPF and still use XPath?说它无法完成,但我不相信。我想象一下XNode上的扩展方法或者XPath可以工作的东西。

我还没有找到关于这个主题的任何其他内容。

如果无法在XAML中完成,那么您是否可以提出另一种方法,即返工过多。

1 个答案:

答案 0 :(得分:0)

自上周以来,我没有找到满意的答案,正在进行重建对话。

我发现XmlDataProvider键在XmlDocument中的SelectNodes()上起作用,而ObjectDataProvider则用于XElement。

可能我可以将SelectNodes等效为扩展方法,关键是以与Elements()相同的方式使用它,你去哪里

<TextBox Text="{Binding Path=XElementSelectNodes[path/to/child].Value}" />

这是我的工作假设,但仍然在努力。