我有以下代码:

<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中可以很好地工作,我在迁移时陷入了困境。

我究竟做错了什么?

最佳答案

我在MSDN论坛上得到了答案。。。

XmlNamespaceManager不仅必须附加到XmlDataProvider,还必须附加到DataGrid本身:

<DataGrid Binding.XmlNamespaceManager="{StaticResource ns}">


希望这对遇到类似问题的人有所帮助。

09-06 19:03