我已经寻找并尝试了各种解决方案,但到目前为止,它们都没有解决我的问题。我在 Visual Studio 2010/.NET4 中使用 WPF 中的内置 DataGrid 来显示存储为 XDocument 的 XML 文档中的数据。
我的代码运行良好,并且我已验证 XDocument 存在且正确。但是,DataGrid 不显示任何数据。
XML 看起来像这样(为清楚起见进行了简化):
<data>
<track>
<id>211</id>
<name>Track Name</name>
<duration>156</duration>
<artist_id>13</artist_id>
<artist_name>Artist Name</artist_name>
<album_id>29</album_id>
<album_name>Album Name</album_name>
</track>
...
</data>
我的 XAML 看起来像这样:
<DataGrid x:Name="LibraryView" Grid.Row="1"
DataContext="{Binding Path=TrackList}" ItemsSource="{Binding XPath=/data/track}">
<DataGridTextColumn Header="Title" Binding="{Binding XPath=name}"/>
<DataGridTextColumn Header="Artist" Binding="{Binding XPath=artist_name}"/>
<DataGridTextColumn Header="Album" Binding="{Binding XPath=album_name}"/>
<DataGridTextColumn Header="Length" Binding="{Binding XPath=duration}"/>
</DataGrid>
支持它的 C# 只是将一个新的 XDocument(从 Web 服务下载)分配给 TrackList 属性(它实现了 INotifyPropertyChanged)。没有对其进行进一步处理。
我之前曾尝试使用 Xlinq 绑定到查询结果,但这也不起作用(同样的问题),所以我想我会尝试 XPath 方法以避免编写可能有错误的 Linq 语句,并尝试找到问题.
对于如何让 DataGrid 正确显示,我已经没有什么想法了。我显然缺乏对它应该如何工作的理解,因此我将非常感谢提供的任何帮助。
编辑:值得注意的是,我在输入数据格式方面具有一定的灵活性,因为我自己正在下载原始 XML。我会尝试一些建议,看看我能做什么。