StairStepSeries.cs 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. // --------------------------------------------------------------------------------------------------------------------
  2. // <copyright file="StairStepSeries.cs" company="OxyPlot">
  3. // Copyright (c) 2014 OxyPlot contributors
  4. // </copyright>
  5. // <summary>
  6. // This is a Avalonia wrapper of OxyPlot.StairStepSeries
  7. // </summary>
  8. // --------------------------------------------------------------------------------------------------------------------
  9. using Avalonia;
  10. namespace OxyPlot.Avalonia
  11. {
  12. /// <summary>
  13. /// This is a Avalonia wrapper of OxyPlot.StairStepSeries
  14. /// </summary>
  15. public class StairStepSeries : LineSeries
  16. {
  17. /// <summary>
  18. /// Identifies the <see cref="VerticalStrokeThickness"/> dependency property.
  19. /// </summary>
  20. public static readonly StyledProperty<double> VerticalStrokeThicknessProperty = AvaloniaProperty.Register<StairStepSeries, double>(nameof(VerticalStrokeThickness), double.NaN);
  21. /// <summary>
  22. /// Identifies the <see cref="VerticalStrokeThickness"/> dependency property.
  23. /// </summary>
  24. public static readonly StyledProperty<LineStyle> VerticalLineStyleProperty = AvaloniaProperty.Register<StairStepSeries, LineStyle>(nameof(VerticalLineStyle), LineStyle.Automatic);
  25. /// <summary>
  26. /// Initializes a new instance of the <see cref="StairStepSeries"/> class.
  27. /// </summary>
  28. public StairStepSeries()
  29. {
  30. InternalSeries = new OxyPlot.Series.StairStepSeries();
  31. }
  32. /// <summary>
  33. /// Gets or sets the stroke thickness of the vertical line segments.
  34. /// </summary>
  35. /// <value>The vertical stroke thickness.</value>
  36. /// <remarks>Set the value to NaN to use the StrokeThickness property for both horizontal and vertical segments.
  37. /// Using the VerticalStrokeThickness property will have a small performance hit.</remarks>
  38. public double VerticalStrokeThickness
  39. {
  40. get { return GetValue(VerticalStrokeThicknessProperty); }
  41. set { SetValue(VerticalStrokeThicknessProperty, value); }
  42. }
  43. /// <summary>
  44. /// Gets or sets the line style of the vertical line segments.
  45. /// </summary>
  46. /// <value>The vertical line style.</value>
  47. public LineStyle VerticalLineStyle
  48. {
  49. get { return GetValue(VerticalLineStyleProperty); }
  50. set { SetValue(VerticalLineStyleProperty, value); }
  51. }
  52. /// <summary>
  53. /// Creates the internal series.
  54. /// </summary>
  55. /// <returns>
  56. /// The internal series.
  57. /// </returns>
  58. public override OxyPlot.Series.Series CreateModel()
  59. {
  60. SynchronizeProperties(InternalSeries);
  61. return InternalSeries;
  62. }
  63. /// <summary>
  64. /// Synchronizes the properties.
  65. /// </summary>
  66. /// <param name="series">The series.</param>
  67. protected override void SynchronizeProperties(OxyPlot.Series.Series series)
  68. {
  69. base.SynchronizeProperties(series);
  70. var s = (OxyPlot.Series.StairStepSeries)series;
  71. s.VerticalLineStyle = VerticalLineStyle;
  72. s.VerticalStrokeThickness = VerticalStrokeThickness;
  73. }
  74. static StairStepSeries()
  75. {
  76. VerticalStrokeThicknessProperty.Changed.AddClassHandler<StairStepSeries>(AppearanceChanged);
  77. VerticalLineStyleProperty.Changed.AddClassHandler<StairStepSeries>(AppearanceChanged);
  78. }
  79. }
  80. }