SciChart® the market leader in Fast WPF Charts, WPF 3D Charts, and now iOS Charting & Android Chart Components

Welcome to the SciChart Community Forums!

Please use the forums below to ask questions about SciChart. Take a moment to read our Question asking guidelines on how to ask a good question and our support policy. We also have a tag=SciChart on Stackoverflow.com where you can earn rep for your questions!

Please note: SciChart team will only answer questions from customers with active support subscriptions. Expired support questions will be ignored. If your support status shows incorrectly, contact us and we will be glad to help.

1
0

Hello scichart developers. đŸ™‚
I am developing some chart app with scichart for WPF.
And I added AnnotationCreationModifier object in chart, but I don’t know how can I apply the LabelFormatter into AnnotationCreationModifier.
I want to modify the label of AnnotationCreationModifier label same as the XAxis’s label.
( Actually in my project, the XAxis’s values are double and customized, so I have to convert this values to DateTime string value. )

This is codes that the LabelFormatter is applied into the XAxis.

var formatter = this.GraphObj.XAxis.LabelFormatter as DateTimeRangeAdoptiveFormatter;

if (formatter == null)
{
    formatter = new DateTimeRangeAdoptiveFormatter();
    this.GraphObj.XAxis.LabelFormatter = formatter;
}

This is my screenshot that have troubles with showing the unformatted double value s into Vertical Annotation.

  • You must to post comments
4
0

Thank you for your answer Yuriy
I fix my code as you guided.
It works great. đŸ™‚

This is my fixed code:

/// <summary>
/// This is the callback function which is called at creating new Annotation.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void _AnnotationCreationModifierObj_AnnotationCreated(object sender, EventArgs e)
{
    var newAnnotation = (this.AnnotationCreationModifierObj.Annotation as AnnotationBase);

    if (newAnnotation != null)
    {
        newAnnotation.IsEditable = true;

        if (newAnnotation is HorizontalLineAnnotation)
        {
            var hAnnotation = (HorizontalLineAnnotation)newAnnotation;
            // This is main codes that I fixed.
            // I binded the Y1 value of HorizontalLineAnnotation object with DoubleToPrettyStrConverter.
            BaseUtil.BindDataToView(hAnnotation, LineAnnotationWithLabelsBase.LabelValueProperty, hAnnotation, "Y1", BindingMode.OneWay, new DoubleToPrettyStrConverter());
        }
        else if (newAnnotation is VerticalLineAnnotation)
        {
            var vAnnotation = (VerticalLineAnnotation)newAnnotation;
            BaseUtil.BindDataToView(vAnnotation, LineAnnotationWithLabelsBase.LabelValueProperty, vAnnotation, "X1", BindingMode.OneWay, new StockDoubleToDateTimeStrConverter(_converter));
        }
    }

    var vm = this.DataContext as SciChartViewModel;
    vm.LineAnnotationTypeObj = SciChartViewModel.LineAnnotationType.None;
}

I attach my screen shots.

Attachments
  • Yuriy
    Hi,Glad that the issue is resolved and thank you for posting the code - I'm sure it will be useful to the others who are confronted with similar issues! :)Best regards, Yuriy
  • You must to post comments
0
0

Hi,

The screenshot is missed for some reason…could you re-attach it? As for the question, LabelFormatter was intended to work with axes, but you can apply it to annotation’s label too. Just use it inside a value converter for the label, like the following:

                <s:VerticalLineAnnotation VerticalAlignment="Stretch"
                                          LabelValue="{Binding X1, Converter={StaticResource FormatLabelConverter}}"
                                          ShowLabel="True" />

And in the FormatLabelConverter just pass a value into a LabelFormatter instance.

Does this make sense for you?

Best regards,
Yuriy

  • You must to post comments
Showing 2 results
Your Answer

Please first to submit.