2011-01-01 2 views
0

Je rencontre des problèmes pour remplir un graphique à secteurs dans mon projet WP7. En ce moment, mon code est comme suit ci-dessous. J'ai essayé plusieurs façons de récupérer les données d'un service Web XML, mais pas de chance. Quelqu'un peut-il voir ce que j'ai mal fait? L'erreur que j'obtiens en ce moment est, "Impossible de convertir implicitement le type 'System.Collections.Generic.IEnumerable' en 'System.Xml.Linq.XElement' Une conversion explicite existe (manque-t-il un cast?) »WP7 Problème de remplissage du graphique à secteurs

XDocument XDocument = XDocument.Load(new StringReader(e.Result)); 

     XElement Traffic = XDocument.Descendants("traffic").First(); 
     XElement Quota = XDocument.Descendants("traffic").Attributes("quota"); 

     ObservableCollection<PieChartItem> Data = new ObservableCollection<PieChartItem>() 
     { 
      new PieChartItem {Title = "Traffic", Value = (double)Traffic}, 
      new PieChartItem {Title = "Quota", Value = (double)Quota}, 
     }; 

     pieChart1.DataSource = Data; 
+0

À quoi ressemble le fichier XML? – devuxer

Répondre

2

je suppose cette ligne a l'erreur de compilation:

XElement Quota = XDocument.Descendants("traffic").Attributes("quota"); 

le résultat de Descendants("traffic") est un IEnumerable, pas XElement. dans la ligne ci-dessus que vous obtenez déjà First de cet énumérable, qui est l'article que vous voulez, n'est-ce pas?

la ligne des quotas devrait être:

XElement Quota = Traffic.Attributes("quota"); 

style sage, la plupart des gens font moins variables locales tubé, comme traffic et quota et data pour les distinguer des propriétés de niveau de classe et les membres.

Mise à jour: il ressemble à Attributes("quota") retours IEnumerable<XAttribute>, de sorte que la ligne de quotas devrait être:

XAttribute Quota = Traffic.Attributes("quota").FirstOrDefault(); 

ou pour simplifier:

var traffic = XDocument.Descendants("traffic").First(); 
var quota = traffic.Attributes("quota").FirstOrDefault(); 

Je ne veux pas être signifie , mais corriger les erreurs du compilateur comme cela devrait être quelque chose que vous ne devriez pas avoir à venir à stackoverflow. L'erreur du compilateur lui-même vous dit quel est le problème: la méthode renvoie un type autre que ce que a déclaré. En utilisant var peut simplifier une partie de cela.

+0

On dirait que c'est le problème. –

Questions connexes