I searched and tried various solutions, but so far none of them have solved my problem. I am using the built-in DataGrid from WPF in Visual Studio 2010 / .NET4 to display data from an XML document stored as an XDocument.
My code is working fine, and I confirmed that the XDocument is present and correct. However, the DataGrid does not display any data.
XML looks like this (simplified for clarity):
<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>
My XAML looks like this:
<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 #, which supports it, simply assigns a new XDocument (downloaded from the web service) to the TrackList property (which implements INotifyPropertyChanged). Further processing is not performed on it.
I had previously tried using XLinq to bind to the result of a query that didn't work either (same problem), so I thought I'd try the XPath approach to avoid writing a potentially false Linq statement and try to find the problem.
I'm running out of ideas on how to properly display a DataGrid. My understanding of how this should work is clearly lacking, so I would really appreciate any help offered.
Edit: It is worth noting that I have some flexibility with the input format, since I load raw XML. I will try some of the suggestions and see what I can do.
data-binding wpf wpfdatagrid
Iangilham
source share