|
<chart:SfChart Margin="20">
<chart:SfChart.PrimaryAxis>
<chart:CategoryAxis/>
</chart:SfChart.PrimaryAxis>
<chart:SfChart.SecondaryAxis>
<local:NumericalExt x:Name="axis" Interval="0.00000005" LabelFormat="0.00000000"/>
</chart:SfChart.SecondaryAxis>
</chart:SfChart> |
|
public class NumericalExt:NumericalAxis
{
protected override void GenerateVisibleLabels()
{
DoubleRange range = VisibleRange;
double interval = Convert.ToDouble(this.Interval);
double position;
if ((Minimum != null && Maximum != null && Interval != null) || this.DesiredIntervalsCount != null
||EdgeLabelsVisibilityMode == EdgeLabelsVisibilityMode.AlwaysVisible
|| (EdgeLabelsVisibilityMode == EdgeLabelsVisibilityMode.Visible ))
position = range.Start;
else
position = range.Start - (range.Start % interval);
double previousPosition = double.NaN;
for (; position <= range.End; position += interval)
{
if (position == previousPosition)
break;
if (range.Inside(position))
{
VisibleLabels.Add(new ChartAxisLabel(position, GetActualLabelContent(position), position));
}
previousPosition = position;
}
if (((Maximum != null && range.End.Equals(Maximum))
|| EdgeLabelsVisibilityMode == EdgeLabelsVisibilityMode.AlwaysVisible
|| (EdgeLabelsVisibilityMode == EdgeLabelsVisibilityMode.Visible ))
&& !range.End.Equals(position - interval))
{
VisibleLabels.Add(new ChartAxisLabel(range.End, GetActualLabelContent(range.End), range.End));
}
}
internal virtual object GetActualLabelContent(double position)
{
return position.ToString(this.LabelFormat, CultureInfo.CurrentCulture);
}
} |