如何在超过设定的最大点数后自动 scroll/pan Oxyplot?

How to auto scroll/pan Oxyplot after it has more than a set maximum points?

我使用以下 LinearAxis 作为我的 X 轴,我想将最小值设置为 0,最大值设置为 300。但在某些情况下,X 轴可以超过 300。在那种情况下, 我希望 x 轴自动滚动。

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

我知道如果我不设置最小值或最大值,轴实际上是自动缩放的,但它从一开始就自动缩放,而不考虑设置的最大值,这不是我想要的。

我应该在 LinearAxis 上尝试任何设置吗?

您可以将SeriesItemsSource属性绑定到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;
    }

请注意 oxypPlot 的名称,botAxis 是您正在使用的轴。

希望对您有所帮助。