コード例 #1
0
        private void OnSelectAccount(object obj)
        {
            Account item = obj as Account;

            if (item != null)
            {
                var payments      = new ObservableCollection <Payment>(_payments.GetPaymentsByAccountId(item.Id));
                var items         = payments.SelectMany(p => p.PaymentItems).ToList();
                var serviceNames  = items.Select(pi => pi.Service.Name).Distinct();
                var serCollection = new SeriesCollection();
                var sumAll        = items.Select(pi => pi.Amount).Sum();
                foreach (var name in serviceNames)
                {
                    var sum       = items.Where(pi => pi.Service.Name == name).Select(pi => pi.Amount).Sum();
                    var pieSeries = new PieSeries();
                    pieSeries.Title  = string.Format("{0}: {1} ({2:P})", name, sum, sum / sumAll);
                    pieSeries.Values = new ChartValues <ObservableValue> {
                        new ObservableValue(Convert.ToDouble(sum))
                    };
                    pieSeries.DataLabels    = sum / sumAll > 0.05M;
                    pieSeries.LabelPosition = PieLabelPosition.InsideSlice;
                    pieSeries.LabelPoint    = chartPoint => name;
                    serCollection.Add(pieSeries);
                }
                SeriesCollection = serCollection;
                RaisePropertyChanged(() => SeriesCollection);
            }
        }