【问题标题】:Bindable annotations in OxyPlot chartOxyPlot 图表中的可绑定注释
【发布时间】:2018-10-24 14:17:49
【问题描述】:

我正在尝试使用 OxyPlot 来可视化时间序列,并且我正在使用注释来标记一些时间点和值级别,例如最小值/最大值等。

我想在 WPF 中通过绑定实现这一点,到目前为止,我从 Plot 控件、两个轴和一个数据系列开始。这很好用,但我找不到将注释绑定到 ObservableCollection<Annontation> 的方法,其中包含动态创建的各种注释。

<UserControl
    ...
    xmlns:oxy="http://oxyplot.org/wpf"
    ...
    >
    <Grid>
        ...
        <oxy:Plot>
            <oxy:Plot.Axes>
                <oxy:DateTimeAxis ... />
                <oxy:LinearAxis ... />
            </oxy:Plot.Axes>
            <oxy:Plot.Series>
                <oxy:StairStepSeries ... />
            </oxy:Plot.Series>
            <oxy:Plot.Annotations>
                <!--
                How do I bind to the ObservableCollection 'Annotations' in my ViewModel?
                Note, 'Annotations' property isn't available directly in Plot, either.
                -->
            </oxy:Plot.Annotations>
        </oxy:Plot>
    </Grid>
</UserControl>

【问题讨论】:

    标签: wpf xaml data-binding annotations oxyplot


    【解决方案1】:

    我遇到了类似的问题。只是为其他人提供答案,如何使用 OxyPlot 处理这个问题:

    如果你有未知数量的注解或系列,你应该使用

     <oxy:PlotView Model="{Binding PlotModel}" />
    

    在 Xaml 和 ViewModel 上的此属性中

    public PlotModel PlotModel { get; set; }
    

    在此属性上,您具有更大的灵活性。您不能像LineSeries.ItemSource 那样设置PlotModel.Annotations,但您可以随时添加和删除这么多您需要的注释。

    【讨论】:

    • 听起来不错,但不幸的是我不再使用 OxyPlot。但出于好奇,我稍后会尝试。谢谢:)
    • 代码隐藏的情节模型是正确的方法。多年来,我已经对这两种变体(OxyPlot+MVVM 和绑定 vs 代码隐藏绘图模型)进行了试验,但 MVVM 的方式非常有限。
    【解决方案2】:

    在将近一年没有答案之后,我决定简要总结一下我在那段时间的反复试验中的经验。

    我基本上放弃了在我的 WPF 应用程序中使用 OxyPlot 的方法,所以如果读者对使用 OxyPlot 的解决方案相当感兴趣,(s)他可能在这里找不到答案,抱歉。

    在谷歌搜索和已经提到的反复试验等之后,我终于切换到了一个基于 Web 的可视化解决方案(在我的例子中是 Grafana)和一个时间序列数据库(在我的例子中是 InfluxDB)。可视化和数据源等还有其他可能性,但对我来说这是最合适的。我不会提供一个完整的列表,所以请谷歌搜索替代方案。

    对于我的 .Net 案例来说,最有趣的是我可以将 Grafana 图形的一部分嵌入到 WPF 窗口上的 Web 组件中,但我最终没有使用这个解决方案,所以很遗憾我不能再给出一个全面的解决方案。重要的是,我可以通过 web-stuff 在 .Net 中使用 Grafana,所以没有进一步的限制。

    与此同时,我更深入地研究了上述系统,可以为我们的案例构建一些非常有用的仪表板,并很快构建一些有趣的查询等。即使您想创建自己的可视化,我也建议您设置一个虚拟的具有可视化平台、时间序列数据库(或任何其他数据库系统)和一些在某处运行的服务/守护进程/脚本的机器。这对我帮助很大。

    如果有人喜欢添加一些东西,请随意。至少在我的情况下,这个问题得到了回答,所以我会关闭它。

    【讨论】:

      猜你喜欢
      • 2018-09-07
      • 2020-03-18
      • 1970-01-01
      • 2013-06-16
      • 1970-01-01
      • 1970-01-01
      • 2022-09-29
      • 1970-01-01
      • 2016-11-13
      相关资源
      最近更新 更多