Phi*_*ans 4 c# data-binding wpf xaml oxyplot
我正在努力解决 WPF 项目中有关 OxyPlot 的几个问题。
首先,我可以使用 Plot 类或 PlotView 类。这两个类有什么区别?
理想情况下,我想对模型(或至少部分模型)和数据使用数据绑定。
如果我使用 PlotView,我可以对模型使用 Binding,如下所示:
<oxy:PlotView Model="{Binding Model}"/>
Run Code Online (Sandbox Code Playgroud)
如果我使用 Plot,我可以对数据使用数据绑定,例如
<oxy:Plot>
<oxy:Plot.Series>
<oxy:LineSeries ItemsSource="{Binding Points}" />
</oxy:Plot.Series>
</oxy:Plot>
Run Code Online (Sandbox Code Playgroud)
我可以让这两个都工作,但是有没有办法对模型和数据使用绑定?
如果我使用 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>
Run Code Online (Sandbox Code Playgroud)
我根本无法让它发挥作用。曲线始终为绿色。我的 LineColor 属性是使用 OxyColor 类型定义的。这是错误的类型吗?
我知道我在同一篇文章中提出了几个问题,但我认为它们是非常密切相关的。
首先,我可以使用 Plot 类或 PlotView 类。这两个类有什么区别?
我认为您在示例中看到了差异,如果您想绑定到模型,则必须使用oxy:PlotView
. 如果你想绑定到LineSeries
,那么你将不得不使用oxy:Plot
控制。
我可以让这两个都工作,但是有没有办法对模型和数据使用绑定?
不,如最后一句所述,您不能同时绑定两者,但您可以像这样将 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);
Run Code Online (Sandbox Code Playgroud)
然后使用 绑定到模型,oxy:PlotView
仅此而已。如果您想修改处理绘图行为的参数,则必须绑定到PlotController
属性(以防万一,以供将来的工作)。
编辑:
Oystein Bjorke(OxyPlot 创建者)回答了这两个问题:
该
PlotView
组件现在在所有平台上都是相似的,它仅包含Model
和Controller
属性。该Plot
控件允许您定义轴、系列、注释等,并且这应该仅在基于 XAML 的平台中可用。
归档时间: |
|
查看次数: |
8978 次 |
最近记录: |