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); } } }