创建Oxyplot PlotModel,自动更新新数据传入

时间:2017-05-24 23:44:37

标签: c# wpf oxyplot

我一直在关注这个优秀的教程here,以了解如何在跟踪MVVC时使用OxyPlot创建LineSeries图。我还下载了,并在修复了一些错误之后,设法获得作者编译和运行教程的源代码。可以找到Github上的源代码here

不幸的是,当代码运行并且创建了图表时,图表并不像应该的那样每5秒更新一次。这就是图表在我的机器上永远的样子。它没有更新:

enter image description here

这应该是什么样子,随着时间的推移,应该显示更多的情节:enter image description here

现在,我已经对自己进行了一些挖掘,以找出它为什么不更新。我添加了一些调试命令来查找是否正确添加了新点,如下所示: enter image description here

我已经检查过每隔5秒调用一次UpdateModel,并且测量结果是从GetUpdateData正确返回的,并且lineSerie.Points计数在函数结束之前增加了。 InvalidatePlot也在实际的View类中调用。

我还能做些什么来解决这个问题吗?感谢

1 个答案:

答案 0 :(得分:0)

我明白了。根据{{​​3}}(创建视图部分),我认为我必须把:

<Window.DataContext>
    <local:MainViewModel/>
</Window.DataContext>

在我的XAML文件中。但是根据教程项目,你不需要它:

<Window x:Class="OxyPlotDemo.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:oxy="http://oxyplot.org/wpf"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <oxy:PlotView x:Name="Plot1" Model="{Binding PlotModel}" Margin="10" Grid.Row="1">
    </oxy:PlotView>
</Grid>

删除local.MainViewModel行修复了该问题。我认为它使用了错误的PlotModel,而不是在View类中创建的正确的PlotModel