Вы слишком усложняете все, это действительно просто, используйте
public class ForecastItem
{
public string a {get; set;}
public string b {get; set;}
}
и т. Д.
private void forecastReader_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs dc)
{
if (dc.Error != null)
{
return;
}
XElement xmlNews = XElement.Parse(dc.Result);
listBox1.ItemsSource = from item in xmlNews.Descendants("parent").Elements("sub")
select new ForecastItem
{
a = item.Element("node").Value,
b = item.Element("title").Value,
};
}
Все, что вы с этого момента делаете, это привязываете данные к вашему шаблону данных XAML
Статья здесь