Files
aistudio-wpf-diagram/Live-Charts-master/Examples/UWP/PieChart/DoughnutChartExample.xaml.cs
2021-07-23 09:42:22 +08:00

130 lines
3.9 KiB
C#

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
{
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class DoughnutChartExample : Page
{
public DoughnutChartExample()
{
InitializeComponent();
SeriesCollection = new SeriesCollection
{
new PieSeries
{
Title = "Chrome",
Values = new ChartValues<ObservableValue> { new ObservableValue(8) },
DataLabels = true
},
new PieSeries
{
Title = "Mozilla",
Values = new ChartValues<ObservableValue> { new ObservableValue(6) },
DataLabels = true
},
new PieSeries
{
Title = "Opera",
Values = new ChartValues<ObservableValue> { new ObservableValue(10) },
DataLabels = true
},
new PieSeries
{
Title = "Explorer",
Values = new ChartValues<ObservableValue> { 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<ObservableValue>())
{
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<ObservableValue>();
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);
}
}
}