如何在Xamarin.Android中使用MPAndroidChart的ValueFormatter

时间:2016-07-08 14:56:09

标签: c# xamarin xamarin.android mpandroidchart

我正在使用NuGet包MpAndroidChart ..

在java中,

public class MyValueFormatter implements ValueFormatter {

    private DecimalFormat mFormat;

    public MyValueFormatter() {
        mFormat = new DecimalFormat("###,###,##0.0"); // use one decimal
    }

    @Override
    public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
        // write your logic here
        return mFormat.format(value) + " $"; // e.g. append a dollar-sign
    }
}

我尝试实现ValueFormatter,但该包不包含名为ValueFormatter的接口

如何在C#中实现它?

编辑:

感谢您的回答,但我如何使用它,我试过

QuestionFormatter formatter = new QuestionFormatter();
            chart.AxisLeft.ValueFormatter = (IYAxisValueFormatter) formatter;

但我收到了无效的投射例外

2 个答案:

答案 0 :(得分:1)

IValueFormatter位于MikePhil.Charting.Formatter命名空间

使用:

using MikePhil.Charting.Formatter;

实施例

public class CustomFormatter : IValueFormatter
{
    public IntPtr Handle
    {
        get
        {
            throw new NotImplementedException();
        }
    }

    public void Dispose()
    {
        throw new NotImplementedException();
    }

    public string GetFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler)
    {
        throw new NotImplementedException();
    }
}

注意:当然,您需要使用自己的代码实现这些方法; - )

更新

public class CustomYFormatter : IYAxisValueFormatter
{
    public IntPtr Handle
    {
        get
        {
            throw new NotImplementedException();
        }
    }

    public void Dispose()
    {
        throw new NotImplementedException();
    }

    public string GetFormattedValue(float value, YAxis yAxis)
    {
        throw new NotImplementedException();
    }
}

答案 1 :(得分:0)

除了@SushiHangover的答案之外,你必须在实现java接口时继承Java.Lang.Object,然后由你和你的基类处理handle属性和dispose方法可以写你的格式化方法

public class MyValueFormatter : Java.Lang.Object, IValueFormatter
{
    public string GetFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler)
    {
        return value.ToString("F0");
    }
}
相关问题