我是WPF和c#的新手,所以请原谅我:)我的目标是使用LiveCharts2和WPF帮助将数据绘制成图形,并实时添加数据。
我遵循了LiveCharts2的例子,添加了类ViewModel和XAML,一切都很好:
public partial class ViewModel
{
public ISeries[] Series { get; set; } =
{
new LineSeries<double>
{
Values = new double[] { 1, 2 },
Fill = null
}
};
这是静态数据。我如何将它绑定到一个随时变化的变量?或者我应该如何为此更改代码?
我尝试只编写XAML代码(视图代码),并以LiveCharts2为例,将数据添加到"值"中。但我没能做到。
我想要这样的东西,只是火和忘记&希望数据图能自动更新
new LineSeries<double>
{
Values = new double[] { myChangedata },
Fill = null
}
您需要使用ObservableCollection而不是数组,以便图表可以接收更新
public partial class ViewModel
{
private ObservableCollection<double> myChangedData = new();
public ViewModel()
{
Series.Add(new LineSeries<double>
{
Values = myChangedData,
Fill = null,
});
}
public object Sync { get; } = new();
public List<ISeries> Series { get; set; } = new();
}
然后添加数据
lock (Sync)
{
// Any changes including adding, clearing, etc must be synced.
myChangedData.Add(1D);
myChangedData.Add(2D);
}
在处理实时数据时,请确保您在图表上设置了SyncContext属性,并在任何更改之前始终锁定它。
<lc:CartesianChart Series="{Binding Series}" SyncContext="{Binding Sync}"/>