mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-03-07 10:10:49 +08:00
78 lines
2.5 KiB
C#
78 lines
2.5 KiB
C#
using System;
|
|
using System.Linq;
|
|
using System.Windows;
|
|
using LiveCharts;
|
|
using LiveCharts.Defaults;
|
|
using LiveCharts.Helpers;
|
|
using LiveCharts.Wpf;
|
|
|
|
namespace Wpf.CartesianChart.UIElements
|
|
{
|
|
public class UiElementsViewModel
|
|
{
|
|
private DateTimePoint _selectedPoint;
|
|
|
|
public UiElementsViewModel()
|
|
{
|
|
Values = DataProvider.Points.AsChartValues();
|
|
Formatter = x => new DateTime((long) x).ToString("dd MMM");
|
|
Step = TimeSpan.FromDays(1).Ticks * 2;
|
|
|
|
//lets get some random points to add an even in the chart.
|
|
var e1 = Values.Skip(15).Take(1).First();
|
|
var e2 = Values.Skip(35).Take(1).First();
|
|
|
|
SelectedVisualElement = new VisualElement
|
|
{
|
|
HorizontalAlignment = HorizontalAlignment.Center,
|
|
VerticalAlignment = VerticalAlignment.Bottom,
|
|
UIElement = new SelectedItemControl()
|
|
};
|
|
|
|
Visuals = new VisualElementsCollection
|
|
{
|
|
new VisualElement
|
|
{
|
|
X = e1.DateTime.Ticks,
|
|
Y = e1.Value,
|
|
HorizontalAlignment = HorizontalAlignment.Center,
|
|
VerticalAlignment = VerticalAlignment.Top,
|
|
UIElement = new EventAControl()
|
|
},
|
|
new VisualElement
|
|
{
|
|
X = e2.DateTime.Ticks,
|
|
Y = e2.Value,
|
|
HorizontalAlignment = HorizontalAlignment.Center,
|
|
VerticalAlignment = VerticalAlignment.Top,
|
|
UIElement = new EventBControl()
|
|
},
|
|
SelectedVisualElement
|
|
};
|
|
}
|
|
|
|
public ChartValues<DateTimePoint> Values { get; set; }
|
|
public VisualElementsCollection Visuals { get; set; }
|
|
public VisualElement EventA { get; set; }
|
|
public VisualElement EventB { get; set; }
|
|
public VisualElement SelectedVisualElement { get; set; }
|
|
public Func<double, string> Formatter { get; set; }
|
|
public double Step { get; set; }
|
|
public DateTimePoint SelectedPoint
|
|
{
|
|
get { return _selectedPoint; }
|
|
set
|
|
{
|
|
_selectedPoint = value;
|
|
UpdateSelectedVisual();
|
|
}
|
|
}
|
|
|
|
private void UpdateSelectedVisual()
|
|
{
|
|
SelectedVisualElement.X = SelectedPoint.DateTime.Ticks;
|
|
SelectedVisualElement.Y = SelectedPoint.Value;
|
|
}
|
|
}
|
|
}
|