|
|
|
@ -0,0 +1,123 @@ |
|
|
|
|
using LiveCharts; |
|
|
|
|
using LiveCharts.Defaults; |
|
|
|
|
using LiveCharts.Wpf; |
|
|
|
|
using System; |
|
|
|
|
using System.Collections.Generic; |
|
|
|
|
using System.Linq; |
|
|
|
|
using System.Text; |
|
|
|
|
using System.Threading.Tasks; |
|
|
|
|
using System.Windows; |
|
|
|
|
using System.Windows.Controls; |
|
|
|
|
using System.Windows.Data; |
|
|
|
|
using System.Windows.Documents; |
|
|
|
|
using System.Windows.Input; |
|
|
|
|
using System.Windows.Media; |
|
|
|
|
using System.Windows.Media.Imaging; |
|
|
|
|
using System.Windows.Shapes; |
|
|
|
|
|
|
|
|
|
namespace Tutorial.BasicPlots |
|
|
|
|
{ |
|
|
|
|
/// <summary> |
|
|
|
|
/// DoughnutWindow.xaml에 대한 상호 작용 논리 |
|
|
|
|
/// </summary> |
|
|
|
|
public partial class DoughnutWindow : Window |
|
|
|
|
{ |
|
|
|
|
private int _index; |
|
|
|
|
|
|
|
|
|
public SeriesCollection SeriesCollection { get; set; } |
|
|
|
|
|
|
|
|
|
public DoughnutWindow() |
|
|
|
|
{ |
|
|
|
|
InitializeComponent(); |
|
|
|
|
InitInstance(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void InitInstance() |
|
|
|
|
{ |
|
|
|
|
SeriesCollection = new SeriesCollection() |
|
|
|
|
{ |
|
|
|
|
new PieSeries() |
|
|
|
|
{ |
|
|
|
|
Title = "Chrome", |
|
|
|
|
Values = new ChartValues<ObservableValue> { new ObservableValue(8) }, |
|
|
|
|
DataLabels = true, |
|
|
|
|
}, |
|
|
|
|
new PieSeries() |
|
|
|
|
{ |
|
|
|
|
Title = "FireFox", |
|
|
|
|
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 = "Edge", |
|
|
|
|
Values = new ChartValues<ObservableValue> { new ObservableValue(20) }, |
|
|
|
|
DataLabels = true, |
|
|
|
|
}, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
DataContext = this; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void btnUpdate_Click(object sender, RoutedEventArgs e) |
|
|
|
|
{ |
|
|
|
|
Random rand = new Random(); |
|
|
|
|
foreach (var series in SeriesCollection) |
|
|
|
|
{ |
|
|
|
|
foreach (var observable in series.Values.Cast<ObservableValue>()) |
|
|
|
|
{ |
|
|
|
|
observable.Value = rand.Next(0, 20); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void btnRestart_Click(object sender, RoutedEventArgs e) |
|
|
|
|
{ |
|
|
|
|
chtPie.Update(true, true); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void btnAddSeries_Click(object sender, RoutedEventArgs e) |
|
|
|
|
{ |
|
|
|
|
Random rand = new Random(); |
|
|
|
|
int len = SeriesCollection.Count > 0 ? SeriesCollection[0].Values.Count : 5; |
|
|
|
|
|
|
|
|
|
var vals = new ChartValues<ObservableValue>(); |
|
|
|
|
for (int i = 0; i < len; i++) |
|
|
|
|
{ |
|
|
|
|
vals.Add(new ObservableValue(rand.Next(0, 10))); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
SeriesCollection.Add(new PieSeries() { Values = vals, DataLabels = true, Title = $"Browser{++_index}" }); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void btnRemoveSeries_Click(object sender, RoutedEventArgs e) |
|
|
|
|
{ |
|
|
|
|
if (SeriesCollection.Count > 0) |
|
|
|
|
SeriesCollection.RemoveAt(SeriesCollection.Count - 1); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void btnAddValue_Click(object sender, RoutedEventArgs e) |
|
|
|
|
{ |
|
|
|
|
Random rand = new Random(); |
|
|
|
|
foreach (var series in SeriesCollection) |
|
|
|
|
{ |
|
|
|
|
series.Values.Add(new ObservableValue(rand.Next(0, 10))); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void btnRemoveValue_Click(object sender, RoutedEventArgs e) |
|
|
|
|
{ |
|
|
|
|
foreach (var series in SeriesCollection) |
|
|
|
|
{ |
|
|
|
|
if (series.Values.Count > 0) |
|
|
|
|
series.Values.RemoveAt(series.Values.Count - 1); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |