mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-03-07 18:20:51 +08:00
118 lines
4.3 KiB
C#
118 lines
4.3 KiB
C#
using LiveCharts;
|
|
using LiveCharts.Defaults;
|
|
using LiveCharts.Uwp;
|
|
using System;
|
|
using System.ComponentModel;
|
|
using System.Linq;
|
|
using Windows.UI.Xaml;
|
|
using Windows.UI.Xaml.Controls;
|
|
using Windows.UI.Xaml.Media;
|
|
|
|
// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238
|
|
|
|
namespace UWP.CartesianChart.Financial
|
|
{
|
|
/// <summary>
|
|
/// An empty page that can be used on its own or navigated to within a Frame.
|
|
/// </summary>
|
|
public sealed partial class CandleStickExample : Page, INotifyPropertyChanged
|
|
{
|
|
private string[] _labels;
|
|
|
|
public CandleStickExample()
|
|
{
|
|
InitializeComponent();
|
|
|
|
SeriesCollection = new SeriesCollection
|
|
{
|
|
new CandleSeries
|
|
{
|
|
Values = new ChartValues<OhlcPoint>
|
|
{
|
|
new OhlcPoint(32, 35, 30, 32),
|
|
new OhlcPoint(33, 38, 31, 37),
|
|
new OhlcPoint(35, 42, 30, 40),
|
|
new OhlcPoint(37, 40, 35, 38),
|
|
new OhlcPoint(35, 38, 32, 33),
|
|
new OhlcPoint(32, 35, 30, 32),
|
|
new OhlcPoint(33, 38, 31, 37),
|
|
new OhlcPoint(35, 42, 30, 40),
|
|
new OhlcPoint(37, 40, 35, 38),
|
|
new OhlcPoint(35, 38, 32, 33),
|
|
new OhlcPoint(32, 35, 30, 32),
|
|
new OhlcPoint(33, 38, 31, 37),
|
|
new OhlcPoint(35, 42, 30, 40),
|
|
new OhlcPoint(37, 40, 35, 38),
|
|
new OhlcPoint(35, 38, 32, 33),
|
|
new OhlcPoint(32, 35, 30, 32),
|
|
new OhlcPoint(33, 38, 31, 37),
|
|
new OhlcPoint(35, 42, 30, 40),
|
|
new OhlcPoint(37, 40, 35, 38),
|
|
new OhlcPoint(35, 38, 32, 33),
|
|
new OhlcPoint(32, 35, 30, 32),
|
|
new OhlcPoint(33, 38, 31, 37),
|
|
new OhlcPoint(35, 42, 30, 40),
|
|
new OhlcPoint(37, 40, 35, 38),
|
|
new OhlcPoint(35, 38, 32, 33)
|
|
}
|
|
},
|
|
new LineSeries
|
|
{
|
|
Values = new ChartValues<double> {30, 32, 35, 30, 28},
|
|
Fill = new SolidColorBrush(Windows.UI.Colors.Transparent)
|
|
}
|
|
};
|
|
|
|
//based on https://github.com/beto-rodriguez/Live-Charts/issues/166
|
|
//The Ohcl point X property is zero based indexed.
|
|
//this means the first point is 0, second 1, third 2.... and so on
|
|
//then you can use the Axis.Labels properties to map the chart X with a label in the array.
|
|
//for more info see (mapped labels section)
|
|
//http://lvcharts.net/#/examples/v1/labels-wpf?path=WPF-Components-Labels
|
|
|
|
Labels = new[]
|
|
{
|
|
DateTime.Now.ToString("dd MMM"),
|
|
DateTime.Now.AddDays(1).ToString("dd MMM"),
|
|
DateTime.Now.AddDays(2).ToString("dd MMM"),
|
|
DateTime.Now.AddDays(3).ToString("dd MMM"),
|
|
DateTime.Now.AddDays(4).ToString("dd MMM"),
|
|
};
|
|
|
|
DataContext = this;
|
|
}
|
|
|
|
public SeriesCollection SeriesCollection { get; set; }
|
|
|
|
public string[] Labels
|
|
{
|
|
get { return _labels; }
|
|
set
|
|
{
|
|
_labels = value;
|
|
OnPropertyChanged("Labels");
|
|
}
|
|
}
|
|
|
|
public Object Brushes { get; private set; }
|
|
|
|
private void UpdateAllOnClick(object sender, RoutedEventArgs e)
|
|
{
|
|
var r = new Random();
|
|
|
|
foreach (var point in SeriesCollection[0].Values.Cast<OhlcPoint>())
|
|
{
|
|
point.Open = r.Next((int)point.Low, (int)point.High);
|
|
point.Close = r.Next((int)point.Low, (int)point.High);
|
|
}
|
|
}
|
|
|
|
public event PropertyChangedEventHandler PropertyChanged;
|
|
|
|
public void OnPropertyChanged(string propertyName = null)
|
|
{
|
|
if (PropertyChanged != null) PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
|
}
|
|
}
|
|
}
|