Advertisement
Guest User

Untitled

a guest
Feb 9th, 2015
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.75 KB | None | 0 0
  1.     /// <summary>
  2.     /// Extended OxyPlot ColumnItem class.  Adds a label, which is used by elements such
  3.     /// as a category axis.
  4.     /// </summary>
  5.     public class Item : ColumnItem, INotifyPropertyChanged
  6.     {
  7.         /// <summary>
  8.         /// Label field.  May be used for category axis.
  9.         /// </summary>
  10.         private string _label;
  11.  
  12.         /// <summary>
  13.         /// Label property.  May be used for category axis.
  14.         /// </summary>
  15.         public string Label
  16.         {
  17.             get { return _label; }
  18.             set
  19.             {
  20.                 if (_label != value)
  21.                 {
  22.                     _label = value;
  23.                     NotifyPropertyChanged();
  24.                 }
  25.             }
  26.         }
  27.  
  28.         /// <summary>
  29.         /// PropertyChanged event handler.
  30.         /// </summary>
  31.         public event PropertyChangedEventHandler PropertyChanged;
  32.  
  33.         /// <summary>
  34.         /// PropertyChanged event handling method.
  35.         /// </summary>
  36.         /// <param name="propertyName">Property name.  If not passed, name of the property,
  37.         /// which called this method, is used.</param>
  38.         private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
  39.         {
  40.             if (PropertyChanged != null)
  41.             {
  42.                 PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
  43.             }
  44.         }
  45.     }
  46.  
  47.     /// <summary>
  48.     /// Extended OxyPlot ColumnSeries class.  Allows selection of columns and tracks which
  49.     /// column has been selected.
  50.     /// </summary>
  51.     public class SelectableColumnSeries : ColumnSeries, INotifyPropertyChanged
  52.     {    
  53.         /// <summary>
  54.         /// Selected ColumnItem field.
  55.         /// </summary>
  56.         private ColumnItem _selectedColumn;
  57.  
  58.         /// <summary>
  59.         /// Selected ColumnItem property.
  60.         /// </summary>
  61.         public ColumnItem SelectedColumn
  62.         {
  63.             get { return _selectedColumn; }
  64.             set
  65.             {
  66.                 if (_selectedColumn != value)
  67.                 {
  68.                     _selectedColumn = value;
  69.                     NotifyPropertyChanged();
  70.                 }
  71.             }
  72.         }
  73.  
  74.         /// <summary>
  75.         /// Selected ColumnItem color field.
  76.         /// </summary>
  77.         private OxyColor _selectedColumnColor;
  78.  
  79.         /// <summary>
  80.         /// Selected ColumnItem color property.
  81.         /// </summary>
  82.         public OxyColor SelectedColumnColor
  83.         {
  84.             get { return _selectedColumnColor; }
  85.             set
  86.             {
  87.                 _selectedColumnColor = value;
  88.                 NotifyPropertyChanged();
  89.             }
  90.         }
  91.  
  92.         /// <summary>
  93.         /// SelectableColumnSeries constructor.
  94.         /// </summary>
  95.         public SelectableColumnSeries()
  96.         {
  97.             MouseDown += SelectableColumnSeries_MouseDown;
  98.         }
  99.  
  100.         /// <summary>
  101.         /// MouseDown event handler for the SelectableColumnSeries.  Handles changing of the selected
  102.         /// ColumnItem, as well as its color, if a SelectedColumnColor was provided.  If the color for
  103.         /// selection was not provided, then no visual feedback is provided, but the selection is still
  104.         /// made.
  105.         /// </summary>
  106.         /// <param name="sender">Event sender (object).</param>
  107.         /// <param name="e">Event arguments (OxyMouseDownEventArgs).</param>
  108.         protected void SelectableColumnSeries_MouseDown(object sender, OxyMouseDownEventArgs e)
  109.         {
  110.             var nearest = GetNearestPoint(e.Position, false);
  111.             var column = nearest.Item as ColumnItem;
  112.             if (column == null)
  113.             {
  114.                 return;
  115.             }
  116.  
  117.             if (SelectedColumn != null)
  118.             {
  119.                 SelectedColumn.Color = FillColor;
  120.             }
  121.  
  122.             if (!SelectedColumnColor.IsUndefined())
  123.             {
  124.                 column.Color = SelectedColumnColor;
  125.             }
  126.  
  127.             SelectedColumn = column;
  128.             PlotModel.InvalidatePlot(true);
  129.         }
  130.  
  131.         /// <summary>
  132.         /// PropertyChanged event handler.
  133.         /// </summary>
  134.         public event PropertyChangedEventHandler PropertyChanged;
  135.  
  136.         /// <summary>
  137.         /// PropertyChanged event handling method.
  138.         /// </summary>
  139.         /// <param name="propertyName">Property name.  If not passed, name of the property,
  140.         /// which called this method, is used.</param>
  141.         private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
  142.         {
  143.             if (PropertyChanged != null)
  144.             {
  145.                 PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
  146.             }
  147.         }
  148.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement