我正在尝试使用基于双打的垂直系列来理解 Mappers.XY 类。为了测试它,我想让 Y 轴的所有偶数索引都被红色填充,但 .Fill 似乎只使用 X 值。这是我拥有的代码和结果:
var RedBrush = new SolidColorBrush(Color.FromRgb(238, 83, 80));
Mapper = Mappers.Xy<double>()
.X((value, index) => value)
.Y((value, index) => index)
.Fill(index => index % 2 == 0 ? RedBrush : null)
.Stroke(index => index % 2 == 0 ? RedBrush : null);
只有当 X 值均匀时,我才会以红色条结束,如下所示: Red X-values我什至将 .Fill 更改为基于值但没有变化。
编辑:我认为我已经将问题缩小到使用 .Fill 的默认方法,即:
public CartesianMapper<T> Fill(Func<T, object> predicate);
我认为这使用双精度作为填充的基础,在我的情况下,这将是 X 值。相反,我应该使用 .Fill 的重载,这似乎将索引视为 int ......这就是我想要的:
public CartesianMapper<T> Fill(Func<T, int, object> predicate);
问题是我不确定如何使用它。而不是:
.Fill(index => index % 2 == 0 ? RedBrush : null)
应该是什么?我的 lamda 技能处于新手级别。
***以前可以忽略的文字...
我在这里查看了类型和配置以寻求帮助:https ://lvcharts.net/App/examples/v1/wpf/Types%20and%20Configuration更具体地说,我试图将这两个概念适应我自己的:
- 在系列集合级别
当您定义一个系列集合实例时,您还可以传递一个默认配置,此配置会覆盖全局配置,并且仅当系列配置为空时才会设置:
var mapper = Mappers.Xy<MyClass>().X(v => v.XProp).Y(v => v.YProp);
var seriesCollection = new SeriesCollection(mapper);
myChart.SeriesCollection = seriesCollection;
- 在特定系列
最后,您还可以仅为系列定义映射器,这将覆盖 >globally 和 SeriesCollection 配置:
var mapper = Mappers.Xy<MyClass>().X(v => v.XProp).Y(v => v.YProp);
var pieSeries = new PieSeries(mapper);
问题是这些示例使用带有我没有的属性的 ObservablePoints,因为我只是使用双打。
有谁知道是否可以只使用双打来做到这一点?有什么选择吗?