【发布时间】:2011-01-13 01:43:05
【问题描述】:
我已经寻找并尝试了各种解决方案,但到目前为止,它们都没有解决我的问题。我在 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。我会尝试一些建议,看看我能做什么。
【问题讨论】:
标签: wpf data-binding wpfdatagrid