到目前为止,我已经成功地创建了一个图表,该图表显示了系列中每个数据点的一些信息。我显示如下:
在这种情况下,信息看起来很相似,但是每个点通常可以生成1到5个项目的列表,因此我将此列表显示为字符串。
我这样做是通过在Series中将DataLabels
属性设置为true并将LabelPoint
属性设置为这样的委托来实现的:
private static string GenerarEtiquetaHH(ChartPoint arg)
{
HoraProdVm h = arg.Instance as HoraProdVm;
if (h == null)
return null;
else
return h.TextContent;
}
HoraProdVm
是我的数据点ViewModel。
现在,我想将此文本设置为更好的格式。
如果可能的话,像应用DataTemplate这样可以嵌入DataGrid的东西就很棒。
这可能吗?
这是我定义数据点视图模型的方式:
public class ItemPerdida
{
public string Subcategoria { get; set; }
public decimal MinutosPerdida { get; set; }
public string Observaciones { get; set; }
}
public class ListaPerdidasParaGrafica : ObservableCollection<ItemPerdida>
{
public override string ToString()
{
StringBuilder sb = new StringBuilder();
foreach (ItemPerdida item in this)
{
sb.Append($"{item.Subcategoria} - {item.MinutosPerdida} min\n");
sb.Append($"{item.Observaciones}\n\n");
}
return sb.ToString();
}
}
public class HoraProdVm
{
public ListaPerdidasParaGrafica perdidas;
public decimal OEE { get; set; }
public decimal ProdAcumulada { get; set; }
// Notice that TextContent is Used by LabelPoint delegate function.
public string TextContent { get { return perdidas.ToString(); } }
}
映射器如下:
var HoraProdVmMapper = Mappers.Xy<HoraProdVm>()
.X((value, index) => index)
.Y(value => (int) value.ProdAcumulada);
Charting.For<HoraProdVm>(HoraProdVmMapper);
然后在XAML中:
<lvc:CartesianChart Series="{Binding sc}" >
<lvc:CartesianChart.DataTooltip>
<local:TooltipGraficaHoras />
</lvc:CartesianChart.DataTooltip>
</lvc:CartesianChart>
如果您需要其他信息,请告诉我。
谢谢!