【问题标题】:Adding series to OxyPlot chart programmatically: nothing displayed以编程方式将系列添加到 OxyPlot 图表:没有显示
【发布时间】:2016-05-16 15:10:19
【问题描述】:

我正在尝试在设置图表类型的场景中使用 OxyPlot,然后以编程方式向其中添加 1 个或多个系列。为此:

  • 在 XAML 视图中,我只需添加一个 PlotView 控件。
  • 在代码中,我的类有一个PlotModel 属性(通知更改)和一个AddSeries 方法。每当调用它时,如果尚未配置,我会设置绘图模型(我创建一个新的PlotModel 对象并添加一个LinearAxis),创建一个随机数据LineSeries,并将其添加到Series 集合中情节模型。最后,我在它上面调用InvalidatePlot(true) 来强制它重绘。

但是,当我执行此代码时,什么都没有显示,这不会引发错误。

我搜索了一下,但我发现的唯一代码示例是指 XAML 视图绑定到绑定数据源的典型场景;但在这里我每次都根据图表类型和系列计数重新创建 PlotModel。您可以在这里找到一个虚拟复制解决方案:http://1drv.ms/1R8EFBc。只需编译并运行,然后单击添加系列。有人可以提出解决方案吗?

【问题讨论】:

    标签: c# wpf oxyplot


    【解决方案1】:

    绑定的属性PlotModel 永远不会更新,原因是:

    private void SetupPieChart()
    {
        if (_plot == null) _plot = new PlotModel();
        else _plot.Axes.Clear();
    }
    

    更改为以下内容,它应该可以工作:

    private void SetupPieChart()
    {
        if (PlotModel == null) PlotModel = new PlotModel();
        else PlotModel.Axes.Clear();
    }
    

    自:

    private PlotModel _plot;
    public PlotModel PlotModel
    {
        get { return _plot; }
        set
        {
            _plot = value;
            OnPropertyChanged(); // <=== update here
        }
    }
    

    【讨论】:

    • 谢谢,怪我 :),没注意到,不好意思问了 :)
    • @Naftis 你能把你的代码发布在创建图表先生吗?
    • 在我的例子中,我使用 MVVM 框架 (Caliburn Micro) 并在 VM 代码中创建 PlotModel,将其作为可观察属性公开。该视图只有一个 Plot 控件,其模型属性绑定,例如 Model="{Binding Path=PlotModel,Mode=OneWay}"。虚拟机代码很简单,但是太长了,无法作为评论发表:请在pastebin.com/1EV1cV6D找到它。
    猜你喜欢
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多