Как правильно привязать xml к WPF DataGrid?

Я искал и пробовал различные решения, но до сих пор никто из них не решает мою проблему. Я использую встроенный DataGrid из WPF в Visual Studio 2010 / .NET4 для отображения данных из XML-документа, хранящегося в XDocument.

Мой код работает нормально, и я подтвердил, что XDocument присутствует и корректен. Однако DataGrid не отображает никаких данных.

XML выглядит так (упрощен для ясности):

  211 Track Name 156 13 Artist Name 29 Album Name  ...  

Мой XAML выглядит так:

       

C #, который поддерживает его, просто назначает новый XDocument (загруженный из веб-службы) в свойство TrackList (которое реализует INotifyPropertyChanged). Дальнейшая обработка на нем не производится.

Я ранее пытался использовать XLinq для привязки к результату запроса, который тоже не работал (такая же проблема), поэтому я подумал, что попробую подход XPath, чтобы избежать написания потенциально глючного оператора Linq и попытаться найти проблему ,

У меня заканчиваются идеи о том, как правильно отображать DataGrid. Мое понимание того, как это должно работать, явно отсутствует, поэтому я бы очень признателен за любую помощь.

Изменить: Стоит отметить, что у меня есть определенная гибкость в формате входных данных, поскольку я загружаю необработанный XML. Я попробую некоторые из предложений и посмотрю, что я могу приступить к работе.

Я использовал XLinq и отлично работал, используя XElement вместо XDocument:

 XElement TrackList = XElement.Load("List.xml"); LibraryView.DataContext = TrackList; 

Xaml:

        

Связывание XPath имеет смысл только в том случае, если вы привязываетесь к чему-то, что является XmlNode (например, вы используете XmlDataProvider). См. Здесь .

XPath не работает с classами XDocument. Единственный способ привязки к свойствам XDocument – это обычный синтаксис пути, который не поддерживается XML.

Лучше всего использовать XmlDataSource или преобразовать свой Xml-документ через XDocument в POCO. Это довольно просто, используя LINQ:

 XDocument doc = XDocument.Load(xmlFile); var tracks = from track in doc.Descendants("data") select new Track() { Name= track.Element("name").Value, Duration= track.Element("duration").Value, etc ... }; LibraryView.ItemsSource = tracks; 
  • Связывание в WPF с элементом массива, заданным свойством
  • Как обнаружить сломанные привязки данных WPF?
  • Каковы различные режимы привязки WPF?
  • Почему привязка данных WPF к исключению ласточки?
  • Можно ли связать свойство Canvas's Children в XAML?
  • Image UriSource и привязка данных
  • WPF привязка к локальной переменной
  • WPF MVVM INotifyPropertyChanged Implementation - модель или ViewModel
  • Для чего нужен DataContext?
  • Обход проблемы из-за отсутствия оператора 'nameof' в C # для безопасного хранения данных по типу?
  • Связывание Richtextbox wpf
  • Давайте будем гением компьютера.