使用命名空间进行XML数据绑定

我想使用XML文档的数据绑定来填充一个显示人员列表详细信息的简单表单。 我已经完成了所有设置并且现在正如此工作:

                Male Female      

(为清晰起见,已删除所有位置/布局元素)

现在这很棒! 如果我为它提供了一些与提供的路径匹配的XML,我会在列表框中获得一个名称列表,在单击时在相应的字段中显示名称和性别。 当我开始尝试在XML源中使用命名空间时,问题就来了。 然后XAML变为如下所示:

                    Male Female      

使用此代码(当然还有适当的命名空间的xml),Listbox仍然可以正确显示名称,但单击这些名称不再更新Name和Gender字段! 我的怀疑是,xml命名空间在某种程度上对groupbox的DataContext产生了不利影响,但我不确定为什么或如何。 有谁知道如何在此上下文中使用XML命名空间?

您可以在XPath查询中使用本地名称,如下所示:

       

我还在MSDN WPF表单上提出了这个问题 。 Marco Zhou用这个回答了我,这最终是我寻求的答案。 我在这里复制它是为了寻找相同答案的人的利益:

这有效:

      Sebastian Batistuta 26   Andriey Shevchenko 30   Paviel Nedved 21   David Beckham 19            

我想在查看代码之后,您应该能够在为TextBlock指定Binding.XmlNamespaceManager附加属性后理解它的工作原理。

ListBox是绑定到具有xml命名空间映射信息的数据提供程序的数据,但TextBlock上的绑定没有此信息,这就是它失败的原因。

实际上,在进行主细节数据绑定时,更适合执行以下操作:

      Sebastian Batistuta 26   Andriey Shevchenko 30   Paviel Nedved 21   David Beckham 19            

希望这会让事情变得清晰起来。