using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; namespace RealTimeGraphX.WPF.Components { /// /// Represents a graph axis data point tick value wrapper. /// /// public class GraphAxisTickData : DependencyObject, INotifyPropertyChanged { /// /// Gets or sets a value indicating whether this tick is the first tick. /// public bool IsFirst { get { return (bool)GetValue(IsFirstProperty); } set { SetValue(IsFirstProperty, value); } } public static readonly DependencyProperty IsFirstProperty = DependencyProperty.Register("IsFirst", typeof(bool), typeof(GraphAxisTickData), new PropertyMetadata(false)); /// /// Gets or sets a value indicating whether this tick is the last tick. /// public bool IsLast { get { return (bool)GetValue(IsLastProperty); } set { SetValue(IsLastProperty, value); } } public static readonly DependencyProperty IsLastProperty = DependencyProperty.Register("IsLast", typeof(bool), typeof(GraphAxisTickData), new PropertyMetadata(false)); /// /// Gets or sets a value indicating whether this tick is not the first or last. /// public bool IsCenter { get { return !IsFirst && !IsLast; } } /// /// Gets or sets a value indicating whether this tick index is even. /// public bool IsEven { get { return (bool)GetValue(IsEvenProperty); } set { SetValue(IsEvenProperty, value); } } public static readonly DependencyProperty IsEvenProperty = DependencyProperty.Register("IsEven", typeof(bool), typeof(GraphAxisTickData), new PropertyMetadata(false)); /// /// Gets a value indicating whether this tick index is odd. /// public bool IsOdd { get { return !IsEven; } } ///// ///// Gets or sets the data point. ///// //public IGraphDataPoint Data //{ // get { return (IGraphDataPoint)GetValue(DataProperty); } // set { SetValue(DataProperty, value); } //} //public static readonly DependencyProperty DataProperty = // DependencyProperty.Register("Data", typeof(IGraphDataPoint), typeof(GraphAxisTickData), new PropertyMetadata(null)); private IGraphDataPoint _data; public IGraphDataPoint Data { get { return _data; } set { _data = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Data")); } } /// /// Gets the Data Point value. /// public object Value { get { return Data != null ? Data.GetValue() : null; } } public event PropertyChangedEventHandler PropertyChanged; } }