Assuming you are using an observabledatasource<T>, the range shown is dependent on the enumerator returned by
public IPointEnumerator GetEnumerator(DependencyObject context)
return new ObservableIterator(this);
so. to fix a scale I made class FixedWindowSource <T> : observabledatasource<T>
give it a few properties on how you want to limit your range (a min/max, etc.) I'm going to assume for the time being that you will use min/max fields.
so finally make a new iterator class, the only changes here (between FixedWindowIterator and the observableiterator) are in the constructor
public FixedWindowIterator(FixedWindowSource<T> dataSource)
this.dataSource = dataSource;
if (dataSource.collection.Count == 0) enumerator = dataSource.collection.GetEnumerator();
//obviously you may need to alter this if you're using xmapping etc.
double max = dataSource.Max;
double min = dataSource.Min;
enumerator = (from c in dataSource.collection
where dataSource.xyMapping(c).X >=
min && dataSource.xyMapping(c).X <=max
finally set the min and max as you want