using System; using System.Linq; using System.Windows; using LiveCharts; using LiveCharts.Defaults; using LiveCharts.Wpf; namespace Wpf.PieChart { public partial class DoughnutChartExample { 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); } } }