using LiveCharts;
using LiveCharts.Defaults;
using LiveCharts.Uwp;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238
namespace UWP.PieChart
{
///
/// An empty page that can be used on its own or navigated to within a Frame.
///
public sealed partial class DoughnutChartExample : Page
{
public DoughnutChartExample()
{
InitializeComponent();
SeriesCollection = new SeriesCollection
{
new PieSeries
{
Title = "Chrome",
Values = new ChartValues { new ObservableValue(8) },
DataLabels = true
},
new PieSeries
{
Title = "Mozilla",
Values = new ChartValues { new ObservableValue(6) },
DataLabels = true
},
new PieSeries
{
Title = "Opera",
Values = new ChartValues { new ObservableValue(10) },
DataLabels = true
},
new PieSeries
{
Title = "Explorer",
Values = new ChartValues { new ObservableValue(4) },
DataLabels = true
}
};
//adding values or series will update and animate the chart automatically
//SeriesCollection.Add(new PieSeries());
//SeriesCollection[0].Values.Add(5);
DataContext = this;
}
public SeriesCollection SeriesCollection { get; set; }
private void UpdateAllOnClick(object sender, RoutedEventArgs e)
{
var r = new Random();
foreach (var series in SeriesCollection)
{
foreach (var observable in series.Values.Cast())
{
observable.Value = r.Next(0, 10);
}
}
}
private void AddSeriesOnClick(object sender, RoutedEventArgs e)
{
var r = new Random();
var c = SeriesCollection.Count > 0 ? SeriesCollection[0].Values.Count : 5;
var vals = new ChartValues();
for (var i = 0; i < c; i++)
{
vals.Add(new ObservableValue(r.Next(0, 10)));
}
SeriesCollection.Add(new PieSeries
{
Values = vals
});
}
private void RemoveSeriesOnClick(object sender, RoutedEventArgs e)
{
if (SeriesCollection.Count > 0)
SeriesCollection.RemoveAt(0);
}
private void AddValueOnClick(object sender, RoutedEventArgs e)
{
var r = new Random();
foreach (var series in SeriesCollection)
{
series.Values.Add(new ObservableValue(r.Next(0, 10)));
}
}
private void RemoveValueOnClick(object sender, RoutedEventArgs e)
{
foreach (var series in SeriesCollection)
{
if (series.Values.Count > 0)
series.Values.RemoveAt(0);
}
}
private void RestartOnClick(object sender, RoutedEventArgs e)
{
Chart.Update(true, true);
}
}
}