2017-02-19 19 views
0

Я использую следующий LinearAxis в качестве оси X. Я хотел бы установить минимальный как 0 и максимум как 300. Но в некоторой ситуации X-Axis может превышать 300. В этом случае я хочу ось x для автоматической прокрутки.Как автоматически прокрутить/скопировать Oxyplot после того, как у него больше заданных максимальных точек?

<oxy:LinearAxis Position="Bottom" MajorGridlineStyle="Dot" Title="seconds" 
         MinWidth="100"  Minimum="0" Maximum="300" 
IsPanEnabled="True" ></oxy:LinearAxis> 

Я знаю, что если я не установлен минимальный или максимальный, ось является фактически автоматическое масштабирование, но она автоматически чешуйки с самого начала, независимо от установленного максимального значения, которые не то, что я хочу ,

Любые настройки следует попробовать на LinearAxis?

ответ

1

Вы можете связать имущество ItemsSource с Series с номером ObservableCollection<DataPoint> и обработать событие CollectionChanged. Что-то вроде этого:

((ObservableCollection<DataPoint>)Points1).CollectionChanged += PlotPointsChanged; 
((ObservableCollection<DataPoint>)Points2).CollectionChanged += PlotPointsChanged; 
//... 

, в котором

void PlotPointsChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) 
    { 
     double max = 300; 
     foreach (OxyPlot.Wpf.Series ser in oxyp.Series) 
      foreach (DataPoint dp in ser.ItemsSource) 
       if (dp.X > max) 
        max = dp.X; 
     botAxis.Maximum = max; 
    } 

Обратите внимание, что oxyp это имя Plot и botAxis является осью вы используете.

Надеюсь, это поможет.

+0

Это работает. Я думал, что могут быть некоторые простые настройки относительно оси, но изменение min/max кажется рабочим решением. – Felix