Ian*_*ham 7 data-binding wpf wpfdatagrid
我已经寻找并尝试了各种解决方案,但到目前为止,它们都没有解决我的问题.我在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>
Run Code Online (Sandbox Code Playgroud)
我的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>
Run Code Online (Sandbox Code Playgroud)
备份它的C#只是将一个新的XDocument(从Web服务下载)分配给TrackList属性(实现INotifyPropertyChanged).没有进一步处理.
我以前曾尝试使用XLinq来绑定查询结果,这也不起作用(同样的问题),所以我想我会尝试使用XPath方法来避免写一个潜在的错误Linq语句,并尝试找到问题.
我没有关于如何正确显示DataGrid的想法.我对这应该如何工作的理解显然是缺乏的,所以我非常感谢所提供的任何帮助.
编辑:值得注意的是,我对输入数据格式有一些灵活性,因为我自己下载原始XML.我会尝试一些建议,看看我能开展什么工作.
我使用XLinq并且工作正常,使用XElement而不是XDocument:
XElement TrackList = XElement.Load("List.xml");
LibraryView.DataContext = TrackList;
Run Code Online (Sandbox Code Playgroud)
XAML:
<DataGrid x:Name="LibraryView" ItemsSource="{Binding Path=Elements[track]}">
<DataGrid.Columns>
<DataGridTextColumn Header="Artist" Binding="{Binding Path=Element[artist_name].Value}"/>
<DataGridTextColumn Header="Album" Binding="{Binding Path=Element[album_name].Value}"/>
<DataGridTextColumn Header="Length" Binding="{Binding Path=Element[duration].Value}"/>
</DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24154 次 |
最近记录: |