mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-04-03 23:56:37 +08:00
项目结构调整
This commit is contained in:
@@ -0,0 +1,141 @@
|
||||
using LiveCharts;
|
||||
using LiveCharts.Defaults;
|
||||
using LiveCharts.Uwp;
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Runtime.CompilerServices;
|
||||
using Windows.UI.Xaml;
|
||||
using Windows.UI.Xaml.Controls;
|
||||
|
||||
// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238
|
||||
|
||||
namespace UWP.CartesianChart.StackedArea
|
||||
{
|
||||
/// <summary>
|
||||
/// An empty page that can be used on its own or navigated to within a Frame.
|
||||
/// </summary>
|
||||
public sealed partial class StackedAreaExample : Page, INotifyPropertyChanged
|
||||
{
|
||||
private Func<double, string> _yFormatter;
|
||||
|
||||
public StackedAreaExample()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
SeriesCollection = new SeriesCollection
|
||||
{
|
||||
new StackedAreaSeries
|
||||
{
|
||||
Title = "Africa",
|
||||
Values = new ChartValues<DateTimePoint>
|
||||
{
|
||||
new DateTimePoint(new DateTime(1950, 1, 1), .228),
|
||||
new DateTimePoint(new DateTime(1960, 1, 1), .285),
|
||||
new DateTimePoint(new DateTime(1970, 1, 1), .366),
|
||||
new DateTimePoint(new DateTime(1980, 1, 1), .478),
|
||||
new DateTimePoint(new DateTime(1990, 1, 1), .629),
|
||||
new DateTimePoint(new DateTime(2000, 1, 1), .808),
|
||||
new DateTimePoint(new DateTime(2010, 1, 1), 1.031),
|
||||
new DateTimePoint(new DateTime(2013, 1, 1), 1.110)
|
||||
},
|
||||
LineSmoothness = 0
|
||||
},
|
||||
new StackedAreaSeries
|
||||
{
|
||||
Title = "N & S America",
|
||||
Values = new ChartValues<DateTimePoint>
|
||||
{
|
||||
new DateTimePoint(new DateTime(1950, 1, 1), .339),
|
||||
new DateTimePoint(new DateTime(1960, 1, 1), .424),
|
||||
new DateTimePoint(new DateTime(1970, 1, 1), .519),
|
||||
new DateTimePoint(new DateTime(1980, 1, 1), .618),
|
||||
new DateTimePoint(new DateTime(1990, 1, 1), .727),
|
||||
new DateTimePoint(new DateTime(2000, 1, 1), .841),
|
||||
new DateTimePoint(new DateTime(2010, 1, 1), .942),
|
||||
new DateTimePoint(new DateTime(2013, 1, 1), .972)
|
||||
},
|
||||
LineSmoothness = 0
|
||||
},
|
||||
new StackedAreaSeries
|
||||
{
|
||||
Title = "Asia",
|
||||
Values = new ChartValues<DateTimePoint>
|
||||
{
|
||||
new DateTimePoint(new DateTime(1950, 1, 1), 1.395),
|
||||
new DateTimePoint(new DateTime(1960, 1, 1), 1.694),
|
||||
new DateTimePoint(new DateTime(1970, 1, 1), 2.128),
|
||||
new DateTimePoint(new DateTime(1980, 1, 1), 2.634),
|
||||
new DateTimePoint(new DateTime(1990, 1, 1), 3.213),
|
||||
new DateTimePoint(new DateTime(2000, 1, 1), 3.717),
|
||||
new DateTimePoint(new DateTime(2010, 1, 1), 4.165),
|
||||
new DateTimePoint(new DateTime(2013, 1, 1), 4.298)
|
||||
},
|
||||
LineSmoothness = 0
|
||||
},
|
||||
new StackedAreaSeries
|
||||
{
|
||||
Title = "Europe",
|
||||
Values = new ChartValues<DateTimePoint>
|
||||
{
|
||||
new DateTimePoint(new DateTime(1950, 1, 1), .549),
|
||||
new DateTimePoint(new DateTime(1960, 1, 1), .605),
|
||||
new DateTimePoint(new DateTime(1970, 1, 1), .657),
|
||||
new DateTimePoint(new DateTime(1980, 1, 1), .694),
|
||||
new DateTimePoint(new DateTime(1990, 1, 1), .723),
|
||||
new DateTimePoint(new DateTime(2000, 1, 1), .729),
|
||||
new DateTimePoint(new DateTime(2010, 1, 1), .740),
|
||||
new DateTimePoint(new DateTime(2013, 1, 1), .742)
|
||||
},
|
||||
LineSmoothness = 0
|
||||
}
|
||||
};
|
||||
|
||||
XFormatter = val => new DateTime((long)val).ToString("yyyy");
|
||||
YFormatter = val => val.ToString("N") + " M";
|
||||
|
||||
DataContext = this;
|
||||
}
|
||||
|
||||
public SeriesCollection SeriesCollection { get; set; }
|
||||
public Func<double, string> XFormatter { get; set; }
|
||||
|
||||
public Func<double, string> YFormatter
|
||||
{
|
||||
get { return _yFormatter; }
|
||||
set
|
||||
{
|
||||
_yFormatter = value;
|
||||
OnPropertyChanged();
|
||||
}
|
||||
}
|
||||
|
||||
public StackMode StackMode { get; set; }
|
||||
|
||||
private void ChangeStackModeOnClick(object sender, RoutedEventArgs e)
|
||||
{
|
||||
foreach (var series in SeriesCollection.Cast<StackedAreaSeries>())
|
||||
{
|
||||
series.StackMode = series.StackMode == StackMode.Percentage
|
||||
? StackMode.Values
|
||||
: StackMode.Percentage;
|
||||
}
|
||||
|
||||
if (((StackedAreaSeries)SeriesCollection[0]).StackMode == StackMode.Values)
|
||||
{
|
||||
YFormatter = val => val.ToString("N") + " M";
|
||||
}
|
||||
else
|
||||
{
|
||||
YFormatter = val => val.ToString("P");
|
||||
}
|
||||
}
|
||||
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
|
||||
public void OnPropertyChanged([CallerMemberName]string propertyName = null)
|
||||
{
|
||||
if (PropertyChanged != null) PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user