WPF - OxyPlot - 绑定到DataPoints

时间:2016-02-11 17:02:10

标签: wpf oxyplot

我正在开发使用OxyPlot的WPF应用。

我跟着这个例子。我正在使用以下XAML成功绘制图表:

<oxy:Plot Height="640" HorizontalContentAlignment="Stretch" VerticalAlignment="Stretch">
  <oxy:Plot.Series>
    <oxy:LineSeries ItemsSource="{Binding ResultSet1}" />
    <oxy:LineSeries ItemsSource="{Binding ResultSet2}" />
    <oxy:LineSeries ItemsSource="{Binding ResultSet3}" />
  </oxy:Plot.Series>
</oxy:Plot>

我的ViewModel如下所示:

public class MyViewModel
{
  public IList<DataPoint> ResultSet1 { get; set; }

  public IList<DataPoint> ResultSet2 { get; set; }

  public IList<DataPoint> ResultSet3 { get; set; }

  public void Load()
  {
    this.ResultSet1 = new List<DataPoint>
    {
      new DataPoint(0, 4),
      new DataPoint(40, 12),
      new DataPoint(50, 12)
    };

    this.ResultSet2 = new List<DataPoint>
    {
      new DataPoint(-0.4, 3),
      new DataPoint(8, 12),
      new DataPoint(48, 11)
    };

    this.ResultSet3 = new List<DataPoint>
    {
      new DataPoint(2, 5),
      new DataPoint(12, 14),
      new DataPoint(52, 13)
    };
  }

  public void Refresh()
  {
    this.ResultSet1 = new List<DataPoint>();
    this.ResultSet2 = new List<DataPoint>();
    this.ResultSet3 = new List<DataPoint>();
    System.Windows.MessageBox.Show("should be empty");
  }
}

在我的代码中,我有一个&#34;刷新&#34;按钮。当用户点击它时,我试图刷新显示的数据。但是,它的结果并没有在UI中得到更新。我添加了上面显示的MessageBox,以确保我实际进入Refresh方法。出现该消息框。所以,在这一点上,我知道:

a)OxyPlot图表正在运行,因为我的初始结果集值是硬编码的。 b)我已成功连接视图模型。 c)我正在进入Refresh方法。

我不确定为什么图表上的点似乎并不令人耳目一新。任何见解都表示赞赏!

1 个答案:

答案 0 :(得分:1)

而不是使用IList使用ObservableCollection

 public ObservableCollection<DataPoint> ResultSet1 { get; set; }
 public ObservableCollection<DataPoint> ResultSet2 { get; set; }
 public ObservableCollection<DataPoint> ResultSet3 { get; set; }

而不是使用new IList<T>()使用

ResultSet1.Clear();
ResultSet2.Clear();
ResultSet3.Clear();