我有以下代码:
<Window.Resources>
<XmlNamespaceMappingCollection x:Key="ns">
<XmlNamespaceMapping Prefix="a" Uri="http://musicbrainz.org/ns/mmd-2.0#" />
</XmlNamespaceMappingCollection>
<XmlDataProvider XmlNamespaceManager="{StaticResource ns}" x:Key="SearchArtistDataSource" XPath="/a:metadata/a:artist-list/a:artist" Source="file.xml" />
</Window.Resources>
<DataGrid x:Name="SearchArtistDataGrid" ItemsSource="{Binding Source={StaticResource SearchArtistDataSource}}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding XPath=a:name}" />
<DataGridTextColumn Binding="{Binding XPath=a:country}" />
</DataGrid.Columns>
</DataGrid>
这是我正在使用的XML文件:http://pastebin.com/5bUCBisB
到目前为止我所获得的是将DataGrid绑定到XmlDataProvider - 我可以说很多,因为它会自动生成XML文件中的一些列。问题是我试图添加的手动(显示艺术家列表数组中艺术家的姓名和国家) - 没有任何内容显示在其中。
对于它的价值 - 类似的方法在ListView中运行良好,我在迁移时遇到困难。
我做错了什么?
答案 0 :(得分:2)
我在MSDN论坛上得到了答案......后见之明就是这个问题。
XmlNamespaceManager
不仅要附加到XmlDataProvider
,还要附加到DataGrid
本身:
<DataGrid Binding.XmlNamespaceManager="{StaticResource ns}">
让我们希望这可以帮助那些遇到类似问题的人。