/// <summary> /// Creates a cursor used for level measurements. /// </summary> internal static BoundCursor CreateLevelMeasurementCursor( MeasurementCursorViewModel cursorVM, ChannelViewModel cursorChannelConfiguration, bool isReferenceCursor, Func <double> deltaReferenceLevelProvider, Func <double> referenceLevelProvider) { Func <ScopeCursor, ValueConverter <double, double>, PB.Binding> bindingProvider = (cursor, valueConverter) => PB.Binding.Create(() => cursor.Position.Y == valueConverter.DerivedValue && valueConverter.OriginalValue == cursorVM.Value); var influencingObjects = new INotifyPropertyChanged[] { cursorChannelConfiguration, cursorChannelConfiguration.ReferencePointPosition }; return(CreateMeasurementCursor( MeasurementAxis.Y, isReferenceCursor, () => cursorVM.Value, bindingProvider, deltaReferenceLevelProvider, () => cursorChannelConfiguration.YScaleFactor, () => cursorChannelConfiguration.ReferencePointPosition.Y, referenceLevelProvider, cursorChannelConfiguration.BaseUnitString, cursorChannelConfiguration.Color, influencingObjects)); }
/// <summary> /// Creates a cursor used for time measurements. /// </summary> internal static BoundCursor CreateTimeMeasurementCursor( MeasurementCursorViewModel cursorVM, GraphbaseViewModel graphbaseVM, bool isReferenceCursor, Func <double> deltaReferenceLevelProvider, Func <double> referenceLevelProvider) { Func <ScopeCursor, ValueConverter <double, double>, PB.Binding> bindingProvider = (cursor, valueConverter) => PB.Binding.Create(() => cursor.Position.X == valueConverter.DerivedValue && valueConverter.OriginalValue == cursorVM.Value); var influencingObjects = new INotifyPropertyChanged[] { graphbaseVM, graphbaseVM.TriggerVM, }; return(CreateMeasurementCursor( MeasurementAxis.X, isReferenceCursor, () => cursorVM.Value, bindingProvider, deltaReferenceLevelProvider, () => graphbaseVM.ScaleFactor, () => graphbaseVM.TriggerVM.HorizontalPosition, referenceLevelProvider, graphbaseVM.BaseUnitString, graphbaseVM.Color, influencingObjects)); }