Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// <summary>
- /// Extended OxyPlot ColumnItem class. Adds a label, which is used by elements such
- /// as a category axis.
- /// </summary>
- public class Item : ColumnItem, INotifyPropertyChanged
- {
- /// <summary>
- /// Label field. May be used for category axis.
- /// </summary>
- private string _label;
- /// <summary>
- /// Label property. May be used for category axis.
- /// </summary>
- public string Label
- {
- get { return _label; }
- set
- {
- if (_label != value)
- {
- _label = value;
- NotifyPropertyChanged();
- }
- }
- }
- /// <summary>
- /// PropertyChanged event handler.
- /// </summary>
- public event PropertyChangedEventHandler PropertyChanged;
- /// <summary>
- /// PropertyChanged event handling method.
- /// </summary>
- /// <param name="propertyName">Property name. If not passed, name of the property,
- /// which called this method, is used.</param>
- private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
- {
- if (PropertyChanged != null)
- {
- PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
- }
- }
- }
- /// <summary>
- /// Extended OxyPlot ColumnSeries class. Allows selection of columns and tracks which
- /// column has been selected.
- /// </summary>
- public class SelectableColumnSeries : ColumnSeries, INotifyPropertyChanged
- {
- /// <summary>
- /// Selected ColumnItem field.
- /// </summary>
- private ColumnItem _selectedColumn;
- /// <summary>
- /// Selected ColumnItem property.
- /// </summary>
- public ColumnItem SelectedColumn
- {
- get { return _selectedColumn; }
- set
- {
- if (_selectedColumn != value)
- {
- _selectedColumn = value;
- NotifyPropertyChanged();
- }
- }
- }
- /// <summary>
- /// Selected ColumnItem color field.
- /// </summary>
- private OxyColor _selectedColumnColor;
- /// <summary>
- /// Selected ColumnItem color property.
- /// </summary>
- public OxyColor SelectedColumnColor
- {
- get { return _selectedColumnColor; }
- set
- {
- _selectedColumnColor = value;
- NotifyPropertyChanged();
- }
- }
- /// <summary>
- /// SelectableColumnSeries constructor.
- /// </summary>
- public SelectableColumnSeries()
- {
- MouseDown += SelectableColumnSeries_MouseDown;
- }
- /// <summary>
- /// MouseDown event handler for the SelectableColumnSeries. Handles changing of the selected
- /// ColumnItem, as well as its color, if a SelectedColumnColor was provided. If the color for
- /// selection was not provided, then no visual feedback is provided, but the selection is still
- /// made.
- /// </summary>
- /// <param name="sender">Event sender (object).</param>
- /// <param name="e">Event arguments (OxyMouseDownEventArgs).</param>
- protected void SelectableColumnSeries_MouseDown(object sender, OxyMouseDownEventArgs e)
- {
- var nearest = GetNearestPoint(e.Position, false);
- var column = nearest.Item as ColumnItem;
- if (column == null)
- {
- return;
- }
- if (SelectedColumn != null)
- {
- SelectedColumn.Color = FillColor;
- }
- if (!SelectedColumnColor.IsUndefined())
- {
- column.Color = SelectedColumnColor;
- }
- SelectedColumn = column;
- PlotModel.InvalidatePlot(true);
- }
- /// <summary>
- /// PropertyChanged event handler.
- /// </summary>
- public event PropertyChangedEventHandler PropertyChanged;
- /// <summary>
- /// PropertyChanged event handling method.
- /// </summary>
- /// <param name="propertyName">Property name. If not passed, name of the property,
- /// which called this method, is used.</param>
- private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
- {
- if (PropertyChanged != null)
- {
- PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement