SciChart выдает исключение при вставке новой оси - PullRequest
0 голосов
/ 17 марта 2020

У меня есть два AxisCollection s:

    private AxisCollection _xAxes = new AxisCollection();
    public AxisCollection XAxes
    {
        get => _xAxes;
        set 
        {
            _xAxes = value;
            OnPropertyChanged("XAxes");
        }
    }

    private AxisCollection _yAxes = new AxisCollection();
    public AxisCollection YAxes
    {
        get => _yAxes;
        set
        {
            _yAxes = value;
            OnPropertyChanged("YAxes");
        }
    }

Оба связаны с XAxes и YAxes из SciChartSurface соответственно:

        <s:SciChartSurface Grid.Row="0"
                       Grid.RowSpan="3"
                       Grid.Column="0"
                       Grid.ColumnSpan="2"
                       Panel.ZIndex="0"
                       RenderableSeries="{Binding RenderableSeries}"  
                       ChartTitle="{Binding ChartTitle}"
                       XAxes="{Binding XAxes}"
                       YAxes="{Binding YAxes}">

Я пытаюсь добавить оси с использованием следующего метода:

        public void AddAxes()
    {
        XAxes.Add(new NumericAxis() { AxisTitle = "X Achse"});
        XAxes.Add(new NumericAxis() { AxisTitle = "X Achse 2" });
        YAxes.Add(new NumericAxis() { AxisTitle = "Y Achse", AxisAlignment = AxisAlignment.Left});
    }

Добавление второй оси X вызывает исключение:

"SciChartSurface не отображался, поскольку было сгенерировано исключение: Сообщение: Ein Element mit dem gleichen Schlüssel wurde bereits hinzugefügt. "

что означает" Элемент с тем же ключом уже добавлен ". Я предполагаю (хотя и не уверен), что это происходит потому, что все созданные оси имеют одинаковые x:Key.

Как я могу решить эту проблему?

1 Ответ

1 голос
/ 18 марта 2020

Добавление уникального идентификатора к каждой оси решает проблему:

    public void AddAxes()
    {
        XAxes.Add(new NumericAxis() { Id = "1", AxisTitle = "X Achse"});
        XAxes.Add(new NumericAxis() { Id = "2", AxisTitle = "X Achse 2" });
        YAxes.Add(new NumericAxis() { AxisTitle = "Y Achse", AxisAlignment = AxisAlignment.Left});
    }
...