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.

0
0

I’m adding an annotation to a chart with a DateTime x-axis. Without a label the annotation is successfully added. However, if I specify a label I get an InvalidOperationException when Add() is called. The exception message is “The Type this is a test is not a valid Comparable Type”}:

                var annotation = new VerticalLineAnnotation
                {
                    VerticalAlignment = VerticalAlignment.Stretch,
                    ShowLabel = true,
                    X1 = time.DateTime,
                    Stroke = System.Windows.Media.Brushes.Orange,
                    LabelPlacement = LabelPlacement.TopRight,
                    LabelValue = "this is a test",
                    LabelsOrientation = Orientation.Vertical
                };

                MyChart.Annotations.Add(annotation);

The LabelValue is obviously of type string and non-null and indeed of type IComparable. Any reason I can’t add it?

Version
4.2.2.9777
  • You must to post comments
0
0

Hi Dan,

The VerticalLineAnnotation.LabelValue is expecting a numeric value of IComparable. Unfortunately there is no interface in .NET for IComparableExceptForString 🙂 so we had to use the lowest common denominator interface (IComparable) and hope nobody set the value to a string, or custom class .. Values such as 1.234, or ’22 MAR 2016′ will be valid and will be parsed, but string values won’t.

If you want to place a string value on a VerticalLineAnnotation Axis Label, you can use this code.

    <s:VerticalLineAnnotation VerticalAlignment="Stretch"
                     FontSize="12"
                     FontWeight="Bold"
                     ShowLabel="False"
                     Stroke="Brown"
                     StrokeThickness="2"
                     X1="9.5"
                     Y1="3">
            <s:AnnotationLabel LabelPlacement="Axis" Text="Hello Thar!"  />
    </s:VerticalLineAnnotation>

Best regards,
Andrew

  • Dan Pilat
    For example, the vertical line appears, but not the text:annotation = new VerticalLineAnnotation { VerticalAlignment = annotation.VerticalAlignment, ShowLabel = false, X1 = time.DateTime, Stroke = Brushes.Orange };annotation.Content = new AnnotationLabel { LabelPlacement = LabelPlacement.TopLeft, Text = measurement.Annotation };
  • Andrew
    I have actually tried the above in v4.2.x Annotations are Easy example by modifying the VerticalLineAnnotation which already has a child AnnotationLabel. Try it in the example, Maybe the Code behind translation isn’t correct
  • Dan Pilat
    I have to create annotations dynamically – but I’ll see about making it a resource so at least it’s declared in xaml. I find it interesting that the example can set the label to a string. How is that so given the IComparable restriction you mentioned before?
  • Andrew
    Because VerticalLineAnnotation.LabelValue must be numeric, but AnnotationLabel.LabelValue accepts a formatted string. Before you do any big changes — test it out. See if it works.
  • Dan Pilat
    I was referring to line 69 of the “Annotations are Easy” example that sets a HorizontalLineAnnotation LabelValue property to a string value.…HorizontalLineAnnotation HorizontalAlignment=”Right” FontSize=”12″ FontWeight=”Bold” LabelPlacement=”TopLeft” LabelValue=”Right Aligned, with text on left”…By the way, it isn’t the Content property that’s set, but rather the AnnotationLabels property that gets initialized via xaml. I got everything working by simply declaring my annotations using xaml resources.
0
0

I had the same issue as Dan, wanting to display a non-date string when using a DateTime X axis. The workaround of adding child AnnotationLabels doesn’t work when using the view model, i.e. VerticalLineAnnotationViewModel. No labels appear.

An alternative workaround is to use the LabelTextFormatting property to assign your desired text – you may want to escape some or all of it (single quotes) to prevent it being parsed as a DateTime format string.
E.g. if setting in code

vm.LabelTextFormatting = "'My desired label'";

or equivalent if setting in XAML.

  • You must to post comments
Showing 2 results
Your Answer

Please first to submit.