我正在使用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;
但我收到了无效的投射例外
答案 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");
}
}