以编程方式将系列添加到 OxyPlot 图表:没有显示
Posted
技术标签:
【中文标题】以编程方式将系列添加到 OxyPlot 图表:没有显示【英文标题】:Adding series to OxyPlot chart programmatically: nothing displayed 【发布时间】:2016-05-16 15:10:19 【问题描述】:我正在尝试在设置图表类型的场景中使用 OxyPlot,然后以编程方式向其中添加 1 个或多个系列。为此:
在 XAML 视图中,我只需添加一个PlotView
控件。
在代码中,我的类有一个PlotModel
属性(通知更改)和一个AddSeries
方法。每当调用它时,如果尚未配置,我会设置绘图模型(我创建一个新的PlotModel
对象并添加一个LinearAxis
),创建一个随机数据LineSeries
,并将其添加到Series
集合中情节模型。最后,我在它上面调用InvalidatePlot(true)
来强制它重绘。
但是,当我执行此代码时,什么都没有显示,这不会引发错误。
我搜索了一下,但我发现的唯一代码示例是指 XAML 视图绑定到绑定数据源的典型场景;但在这里我每次都根据图表类型和系列计数重新创建 PlotModel。您可以在这里找到一个虚拟复制解决方案:http://1drv.ms/1R8EFBc。只需编译并运行,然后单击添加系列。有人可以提出解决方案吗?
【问题讨论】:
【参考方案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找到它。以上是关于以编程方式将系列添加到 OxyPlot 图表:没有显示的主要内容,如果未能解决你的问题,请参考以下文章