WP7麻烦填充饼图

时间:2011-01-01 06:01:05

标签: linq windows-phone-7 observablecollection

我在WP7项目中填充饼图时遇到了一些麻烦。目前,我的代码如下。我尝试了几种不同的方法将数据从xml Web服务中恢复,但没有运气。谁能看到我做错了什么?

我现在得到的错误是,“无法将类型'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 个答案:

答案 0 :(得分:2)

我的猜测是这行有编译错误:

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

Descendants("traffic")的结果是IEnumerable,而不是XElement。在上面一行中,您已经获得了可枚举的First,这是您想要的项目,不是吗?

配额行应为:

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

风格方面,大多数人都会将局部变量设置得较低,例如trafficquota以及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可以简化其中的一部分。