mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-03-07 18:20:51 +08:00
130 lines
3.9 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|