我正在努力解决WPF项目中有关OxyPlot的几个问题。
首先,我可以使用Plot类或PlotView类。这两个类之间有什么区别?
理想情况下,我想对模型(或至少部分模型)和数据使用数据绑定。
如果我使用PlotView,我可以使用Binding作为模型,如下所示:
<oxy:PlotView Model="{Binding Model}"/>
如果我使用Plot,我可以使用数据绑定数据,如
<oxy:Plot>
<oxy:Plot.Series>
<oxy:LineSeries ItemsSource="{Binding Points}" />
</oxy:Plot.Series>
</oxy:Plot>
我可以同时使用这两种方法,但有没有办法对模型和数据使用Binding?
如果我使用Plot类和Binding来获取数据,我至少会喜欢使用Binding作为LineColor,就像这样
<oxy:Plot>
<oxy:Plot.Series>
<oxy:LineSeries ItemsSource="{Binding Points}"
DataFieldX="X"
DataFieldY="Y"
StrokeThickness="2"
MarkerSize="0"
LineStyle="Solid"
Color="{Binding LineColor}"
MarkerType="None"/>
</oxy:Plot.Series>
</oxy:Plot>
我根本无法解决这个问题。曲线始终为绿色。我的LineColor属性使用类型OxyColor定义。这是错误的类型吗?
我知道我在同一篇文章中提出了几个问题,但我认为它们的关系密切。
答案 0 :(得分:3)
首先,我可以使用Plot类或PlotView类。这两个类之间有什么区别?
我认为你看到了你的例子中的差异,如果你想绑定到模型,你必须使用oxy:PlotView。如果你想绑定到lineseries,那么你将不得不使用oxy:Plot control。
我可以同时使用这两种方法,但有没有办法对模型和数据使用Binding?
不,如上一句所述,你不能同时绑定两者,但你可以像这样在你的模型中添加lineseries(在你的例子中):
PlotModel model = new PlotModel();
List<DataPoint> Points = new List<DataPoint>();
LineSeries lineserie = new LineSeries
{
ItemsSource = Points,
DataFieldX = "x",
DataFieldY = "Y",
StrokeThickness = 2,
MarkerSize = 0,
LineStyle = LineStyle.Solid,
Color = OxyColors.White,
MarkerType = MarkerType.None,
};
model.Series.Add(lineserie);
然后使用oxy:PlotView
绑定到模型,这就是全部。如果要修改处理绘图行为的参数,则必须绑定到PlotController
属性(以防万一,以备将来工作)。
修改强>
Oystein Bjorke(OxyPlot创作者)这样说,回答了这两个问题:
PlotView
组件现在在所有平台上都类似,它包含 仅限Model
和Controller
属性。Plot
控件可以让你 定义轴,系列,注释等,这应该只是 可在基于XAML的平台中使用。
link:http://discussion.oxyplot.org/topics/240-cant-define-axes-in-xaml/