与WPF中的Oxyplot绑定数据

时间:2016-05-18 18:32:40

标签: c# wpf xaml data-binding oxyplot

我正在努力解决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定义。这是错误的类型吗?

我知道我在同一篇文章中提出了几个问题,但我认为它们的关系密切。

1 个答案:

答案 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组件现在在所有平台上都类似,它包含   仅限ModelController属性。 Plot控件可以让你   定义轴,系列,注释等,这应该只是   可在基于XAML的平台中使用。

link:http://discussion.oxyplot.org/topics/240-cant-define-axes-in-xaml/