using RealTimeGraphEx.Controllers; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Media; namespace RealTimeGraphEx { public class RealTimeGraphExMultiBase : RealTimeGraphExBase { #region Cross Thread Fields protected GraphMultiController _graphController; protected int _maxPoints; protected int updateCounter; protected double _scaleFactor; #endregion #region Properties /// /// Gets or sets the collection of data series to display on the graph. /// public GraphMultiController Controller { get { return (GraphMultiController)GetValue(ControllerProperty); } set { SetValue(ControllerProperty, value); } } public static readonly DependencyProperty ControllerProperty = DependencyProperty.Register("Controller", typeof(GraphMultiController), typeof(RealTimeGraphExMultiBase), new PropertyMetadata(null, new PropertyChangedCallback(DataSeriesCollectionChanged))); private static void DataSeriesCollectionChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var control = d as RealTimeGraphExMultiBase; control._graphController = control.Controller; control.OnControllerChanged(); } #endregion #region Constructors public RealTimeGraphExMultiBase() : base() { _graphController = new GraphMultiController(); } #endregion #region Virtual Methods protected virtual void OnControllerChanged() { } #endregion } }