Добавьте больше ручек в SciChart BoxAnnotation - PullRequest
1 голос
/ 31 января 2020

Я ищу способ добавить маркеры ручек в центр слева и справа от аннотации коробки (места, показанные ниже с помощью красных кружков). По умолчанию маркеры захвата создаются только в четырех углах BoxAnnotation.

GripHandleLocations

В настоящее время я создаю свои аннотации в коде и просматриваю модели, а не XAML.

Я пытался создать пользовательскую составную аннотацию , комбинируя LineAnnotation и BoxAnnotation. Однако ручки LineAnnotation влияют только на линию, а не на составную аннотацию в целом.

    class MyCompositeAnnotation : CompositeAnnotation
    {
        public MyCompositeAnnotation()
        {
            //BoxAnnotation
            Annotations.Add(new BoxAnnotation
            {
                CoordinateMode = AnnotationCoordinateMode.Relative,
                IsEditable = false,
                ResizeDirections = SciChart.Charting.XyDirection.XDirection,
                Background = grayBrushLight,
                BorderBrush = grayBrushRegular,
                X1 = 0,
                X2 = 1,
                Y1 = 0,
                Y2 = 1
            });

            //Center dashed line
            Annotations.Add(new LineAnnotation
            {
                CoordinateMode = AnnotationCoordinateMode.Relative,
                Stroke = grayBrushRegular,
                StrokeThickness = 1,
                IsEditable = true,
                ResizeDirections = SciChart.Charting.XyDirection.XDirection,
                StrokeDashArray = new DoubleCollection(new double[] { 2, 4 }),
                X1 = 0,
                X2 = 1,
                Y1 = 0.5,
                Y2 = 0.5
            });
        }
     }

ОБНОВЛЕНИЕ: В ответ на Сечкин Дургай ответ. Перемещение кода из конструктора в метод OnLoaded не устраняет проблему. Единственные показанные ручки находятся в верхнем левом, верхнем правом, нижнем левом и нижнем правом углах.

CompositeAnnotation

1 Ответ

1 голос
/ 11 февраля 2020

Я думаю, вы не должны добавлять в ctor. Попробуйте добавить загруженную функцию.

class MyCompositeAnnotation : CompositeAnnotation
{

    public MyCompositeAnnotation()
    {
        Loaded+=OnLoaded;

    }

    private void OnLoaded(object sender, RoutedEventArgs e)
    {
        //BoxAnnotation
        Annotations.Add(new BoxAnnotation
        {
            CoordinateMode = AnnotationCoordinateMode.Relative,
            IsEditable = false,
            ResizeDirections = SciChart.Charting.XyDirection.XDirection,
            Background = grayBrushLight,
            BorderBrush = grayBrushRegular,
            X1 = 0,
            X2 = 1,
            Y1 = 0,
            Y2 = 1
        });

        //Center dashed line
        Annotations.Add(new LineAnnotation
        {
            CoordinateMode = AnnotationCoordinateMode.Relative,
            Stroke = grayBrushRegular,
            StrokeThickness = 1,
            IsEditable = true,
            ResizeDirections = SciChart.Charting.XyDirection.XDirection,
            StrokeDashArray = new DoubleCollection(new double[] { 2, 4 }),
            X1 = 0,
            X2 = 1,
            Y1 = 0.5,
            Y2 = 0.5
        });
        Loaded -= OnLoaded;
    }
}
...