2017-05-06 99 views
0

我使用livechart来创建饼图,但每当我运行该程序时,都无法看到图表(http://imgur.com/GWecwgD),但在编辑代码时可以看到图表。 (http://imgur.com/zVvkK3v未显示饼图WPF

这是我的WPF代码:

 <lvc:PieChart Series="{Binding seriesCollection}" Height="150" InnerRadius="100" LegendLocation="Bottom" DataClick="Chart_OnDataClick" Hoverable="True"> 
      <lvc:PieChart.ChartLegend> 
       <lvc:DefaultLegend BulletSize="20"></lvc:DefaultLegend> 
      </lvc:PieChart.ChartLegend> 
      <lvc:PieChart.DataTooltip> 
       <lvc:DefaultTooltip BulletSize="20"></lvc:DefaultTooltip> 
      </lvc:PieChart.DataTooltip> 
     </lvc:PieChart> 

这是我的C#代码:

public Overview() 
{ 
    InitializeComponent(); 
    NorthwindEntities db = new NorthwindEntities(); 
    var data = (from d in db.Sales_by_Categories group d by d.CategoryName into grouped select new { Key = grouped.Key, Sum = grouped.Sum(e => (double)e.ProductSales) }); 
    IEnumerable<Categorysales> datas = from c in data.AsEnumerable() select new Categorysales(c.Key, c.Sum); 


    seriesCollection = new SeriesCollection(); 
    foreach (var item in datas) 
    { 
     seriesCollection.Add(new PieSeries { Title = item.Categoryname, Values = new ChartValues<ObservableValue> { new ObservableValue(item.Categorysum) }, DataLabels = true});//, LabelPoint = PointLabel 
    } 
    /* PointLabel = chartPoint => 
     string.Format("{0} ({1:P})", chartPoint.Y, chartPoint.Participation);*/ 

    // DataContext = this; 
} 
public SeriesCollection seriesCollection { get; set; } 



public Func<ChartPoint, string> PointLabel { get; set; } 

private void Chart_OnDataClick(object sender, ChartPoint chartpoint) 
{ 
    var chart = (LiveCharts.Wpf.PieChart)chartpoint.ChartView; 

    //clear selected slice. 
    foreach (PieSeries series in chart.Series) 
     series.PushOut = 0; 

    var selectedSeries = (PieSeries)chartpoint.SeriesView; 
    selectedSeries.PushOut = 8; 
} 

回答

2

这是在一个窗口或用户控件?

如果它是一个窗口,更改绑定到这一点:

<lvc:PieChart 
    Series="{Binding seriesCollection, RelativeSource={RelativeSource AncestorType=Window}}" 

如果它是一个用户控件,你知道这是怎么回事:

<lvc:PieChart 
    Series="{Binding seriesCollection, RelativeSource={RelativeSource AncestorType=UserControl}}" 

DataContext = this;是个坏习惯。开始用UserControls来做这件事,它会破坏事情。即使在一个窗口中,它也会造成不必要的混淆。

+0

非常感谢。 –