将 DataGrid 绑定到 XmlDataProvider 时出现问题

本文关键字:问题 XmlDataProvider DataGrid 绑定 | 更新日期: 2023-09-27 18:35:19

我有以下代码:

<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 中运行良好,我在迁移时卡住了。

我做错了什么?

将 DataGrid 绑定到 XmlDataProvider 时出现问题

我在MSDN论坛上得到了答案...事后诸葛亮对此很强烈。

XmlNamespaceManager不仅要附着在XmlDataProvider上,还要附着在DataGrid本身上:

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

让我们希望这可以帮助任何遇到类似问题的人。