wpf LiveCharts2将不断变化的数据绑定到图形

hjqgdpho  于 2022-12-14  发布在  Echarts
关注(0)|答案(1)|浏览(901)

我是WPF和C#的新手,所以对我来说很轻松:)我的目标是在WPF帮助下使用LiveCharts2将数据绘制到图形中,并实时添加数据。
我按照LiveCharts2的示例添加了ViewModel类和XAML,一切都运行良好:

public partial class ViewModel
    {
        public ISeries[] Series { get; set; } =
        {
        new LineSeries<double>
        {
            Values = new double[] { 1, 2 },
            Fill = null
        }
        };

这是静态数据..如何将其绑定到在任何给定时间更改的变量?或者如何更改代码以实现此目的?
我尝试只编写XAML代码(视图代码),并采用LiveCharts2中的示例将数据添加到“Values”中,但无法成功。
我想要这样的东西,只是火灾和忘记&希望数据图将自动更新。

new LineSeries<double>
        {
            Values = new double[] { myChangedata },
            Fill = null
        }
dly7yett

dly7yett1#

您需要使用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}"/>

相关问题