在OxyPlot中,<oxy:PlotView>
和<oxy:Plot>
都是用来显示图表的控件,在WPF项目中使用oxyplot之前,先通过NuGet安装依赖包:OxyPlot.Wpf
。
<oxy:PlotView>
和<oxy:Plot>
使用示例:
<oxy:PlotView>
控件是一个视图控件,它绑定到一个PlotModel对象
。这意味着你可以创建一个PlotModel实例,配置它的系列、轴和其他设置,然后将这个模型绑定到PlotView。PlotView负责显示PlotModel的内容,例如:
<oxy:PlotView Model="{Binding MyModel}" />
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.MyModel = new PlotModel { Title = "Example 1" };
this.MyModel.Series.Add(new FunctionSeries(Math.Cos, 0, 10, 0.1, "cos(x)"));
}
public PlotModel MyModel { get; private set; }
}
<oxy:Plot>
控件是一个更静态的控件,它允许你直接在XAML中定义图表。你可以在<oxy:Plot>
标签内部定义系列和轴,而不需要创建一个单独的PlotModel对象。这种方式适合简单的图表,或者当你不需要在代码中动态修改图表内容时使用,例如:
<oxy:Plot Title="Simple Plot">
<oxy:Plot.Series>
<oxy:LineSeries>
<oxy:LineSeries.Points>
<oxy:DataPoint X=0 Y=0 />
<oxy:DataPoint X=1 Y=1 />
</oxy:LineSeries.Points>
</oxy:LineSeries>
</oxy:Plot.Series>
</oxy:Plot>
错误信息
前面的代码是oxyplot官方文档中的使用方法,最近我按照这种方式使用<oxy:Plot>
控件的时候出现了如下图所示的报错:
解决方法
在OxyPlot.Wpf
依赖包版本为1.x时,前面示例代码中的使用方法是没有错的,但是在版本2.x之后,Plot
类被移到了另一个库,所以当我引用的OxyPlot.Wpf
版本为2.x时,程序会出现这个错误。
要解决这个问题,有两个方法:
- 第一种是把依赖包的版本退到1.x,这样就可以顺利解决;
- 第二种方法是下载新的依赖包
OxyPlot.Contrib.Wpf
,下载新的依赖包后,在XML代码中添加新的引用:
并在XML文件中使用xmlns:oxy="http://oxyplot.org/wpf" xmlns:oxycontrols="http://oxyplot.org/wpf/contrib"
oxycontrols
命名空间中的Plot
类:<oxycontrols:Plot .../>