Livecharts如何格式化数据点标签

时间:2019-03-18 19:16:08

标签: c# wpf livecharts

到目前为止,我已经成功地创建了一个图表,该图表显示了系列中每个数据点的一些信息。我显示如下:

Sample Plot

在这种情况下,信息看起来很相似,但是每个点通常可以生成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>

如果您需要其他信息,请告诉我。

谢谢!

0 个答案:

没有答案