WP7 Неисправность круговой диаграммы - PullRequest
0 голосов
/ 01 января 2011

У меня проблемы с заполнением круговой диаграммы в моем проекте WP7. На данный момент мой код выглядит следующим образом. Я пробовал несколько разных способов вернуть данные из веб-службы XML, но не повезло. Кто-нибудь может увидеть, что я сделал не так?

Ошибка, которую я получаю прямо сейчас: «Не удалось неявно преобразовать тип« System.Collections.Generic.IEnumerable »в« System.Xml.Linq.XElement ». Существует явное преобразование (вы пропустили приведение?) «

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;

1 Ответ

2 голосов
/ 01 января 2011

я предполагаю, что в этой строке есть ошибка компиляции:

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

результат Descendants("traffic") равен IEnumerable, а не XElement.в строке выше, что вы уже получаете First из этого перечисляемого элемента, который вам нужен, не так ли?

строка квоты должна быть:

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

С точки зрения стиля, большинство людей используют локальные переменные в нижнем регистре, например traffic и quota и data, чтобы отличать их от свойств и членов уровня класса.Attributes("quota") возвращает IEnumerable<XAttribute>, поэтому строка квоты должна быть:

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

или для упрощения:

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

Я не хочу быть означать , но исправление таких ошибок компилятора должно быть тем, к чему вам не нужно обращаться в stackoverflow.Ошибка самого компилятора говорит вам, в чем проблема: метод возвращает тип, отличный от того, что вы сказали, что он делает.Использование var может упростить некоторые из них.

...