Я использую LiveCharts для отображения гистограммы с уровнями запасов. Названия единиц и уровни запасов хранятся в базе данных доступа, и эти значения извлекаются и помещаются в списки.
Единственное, что действительно должно измениться, — это стоимость акций, поэтому я хотел отслеживать изменения акций и автоматически обновлять базу данных, предоставляя несколько оперативных данных.
Я хочу, чтобы диаграмма автоматически обновлялась при изменении значения (акции) в базе данных. Я не хочу обновлять всю таблицу, а только значение, которое изменилось, чтобы анимация отображалась на отдельных полосах при их изменении.
У меня есть следующий код для загрузки значений моей базы данных в базу данных:
string[] units = new string[30];
List<string> subs = new List<string>();
List<string> line = new List<string>();
List<double> min = new List<double>();
List<double> max = new List<double>();
List<ObservableValue> stock = new List<ObservableValue>();
bool initial = true;
private void LoadData()
{
string strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Database\subDB.mdb";
using (OleDbConnection conn = new OleDbConnection(strConn))
{
conn.Open();
string strSQL = "SELECT * FROM Units";
OleDbCommand command = new OleDbCommand(strSQL, conn);
using (OleDbDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
if (initial)
{
subs.Add(reader["Sub"].ToString());
line.Add(reader["Line"].ToString());
min.Add(Convert.ToDouble(reader["Minimum"]));
max.Add(Convert.ToDouble(reader["Maximum"]));
}
stock.Add(reader["Stock"]);
}
}
initial = false;
}
}
Настройка диаграммы:
public void chartSetup()
{
cartesianChart1.Series = new SeriesCollection
{
new ColumnSeries
{
Title = "Total",
Fill = System.Windows.Media.Brushes.Crimson,
Values = new ChartValues<ObservableValue>(stock)
}
};
cartesianChart1.AxisX.Add(new Axis
{
Title = "Unit",
FontSize = 15,
Separator = new Separator
{
Step = 1,
IsEnabled = false //disable it to make it invisible.
},
LabelsRotation = 45,
Labels = new ChartValues<string>(subs)
});
cartesianChart1.AxisY.Add(new Axis
{
Title = "Total",
FontSize = 15,
ShowLabels = true,
LabelFormatter = value => value.ToString("N")
});
}
Моя проблема в том, что я не могу реализовать ObservableValue для акций. Я получаю сообщение: «Невозможно преобразовать объект в LiveCharts.Defaults.ObservableValue.