【问题标题】:Creating Oxyplot PlotModel that automatically updates with new data incoming创建使用新数据自动更新的 Oxyplot PlotModel
【发布时间】:2017-05-24 23:44:37
【问题描述】:

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

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

这应该是它的样子,随着时间的增加应该会显示更多的图:

现在,我自己进行了一些挖掘,以找出它不更新的原因。我添加了一些调试命令,以查看是否正确添加了新点,如下所示:

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

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

【问题讨论】:

  • 数据更新时,是否调用 OnPropertyChanged ?
  • 是的,但在开始时只有一次,之后数据每 5 分钟左右更新一次。这与教程项目中的行为相同
  • Oxyplot 需要知道数据何时发生变化,也许您每次都必须调用,而不仅仅是开始。你试过了吗?
  • 我没有尝试过,但我认为问题实际上出在我的 XAML 文件中,请参阅我的答案

标签: c# wpf oxyplot


【解决方案1】:

我想通了。根据this tutorial here(创建视图部分),我想我必须把:

<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

【讨论】:

    猜你喜欢
    • 2015-05-30
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    • 1970-01-01
    相关资源
    最近更新 更多