Можно ли отобразить график LineSeries X / Y, который содержит только одну точку?
Для двух или более точек это прекрасно работает, но одна точка не отображается, даже если PointGeometry установлен на какую-то форму.
По крайней мере, в этом варианте я бы ожидал увидеть одну точку для одноточечного ряда. Есть ли способ включить его?
РЕДАКТИРОВАТЬ: я действительно извиняюсь за медленный ответ, я не был за компьютером.
Ответ Сача тронул меня, но у меня все еще нет решения. Посмотрите на мой код - модификация образца Сача.
Если я использую свой собственный тип данных и модуль форматирования для оси, он работает только с одной точкой, если она указана в конструкторе. Если я создам пустую серию, появится ли график, когда я добавлю хотя бы две точки? (см. обработчик мыши вниз)
public partial class MainWindow : Window
{
LineSeries lineSeries;
public SeriesCollection SeriesCollection { get; set; }
public Func<double, string> XFormatter { get; set; }
public Func<double, string> YFormatter { get; set; }
public MainWindow()
{
InitializeComponent();
var dayConfig = Mappers.Xy<DateModel>()
.X(dayModel => (double)dayModel.DateTime.Ticks / TimeSpan.FromHours(1).Ticks)
.Y(dayModel => dayModel.Value);
lineSeries = new LineSeries()
{
//Values = new ChartValues<DateModel>{ new DateModel(DateTime.Now, 3) }, //this works
Values = new ChartValues<DateModel>(),
PointGeometry = DefaultGeometries.Circle
};
SeriesCollection = new SeriesCollection(dayConfig);
SeriesCollection.Add(lineSeries);
XFormatter = value => new System.DateTime((long)(value * TimeSpan.FromHours(1).Ticks)).ToString("HH:mm");
YFormatter = value => value.ToString("0.0000");
DataContext = this;
}
public class DateModel
{
public DateModel(DateTime timestamp, double value)
{
DateTime = timestamp;
Value = value;
}
public System.DateTime DateTime { get; set; }
public double Value { get; set; }
}
private void OnMouseDown(object sender, MouseButtonEventArgs e)
{
lineSeries.Values.Add(new DateModel(DateTime.Now, 3));
}
}