using System; using System.Collections.Generic; using Avalonia; using Avalonia.Media; namespace ControlCatalog { public enum AxisPlotMode { Normal, EvenlySpaced, Logarithmic } public partial class LineChart { // Area public static readonly StyledProperty AreaMarginProperty = AvaloniaProperty.Register(nameof(AreaMargin)); public static readonly StyledProperty AreaFillProperty = AvaloniaProperty.Register(nameof(AreaFill)); public static readonly StyledProperty AreaStrokeProperty = AvaloniaProperty.Register(nameof(AreaStroke)); public static readonly StyledProperty AreaStrokeThicknessProperty = AvaloniaProperty.Register(nameof(AreaStrokeThickness), 1.0); public static readonly StyledProperty AreaStrokeDashStyleProperty = AvaloniaProperty.Register(nameof(AreaStrokeDashStyle)); public static readonly StyledProperty AreaStrokeLineCapProperty = AvaloniaProperty.Register(nameof(AreaStrokeLineCap), PenLineCap.Round); public static readonly StyledProperty AreaStrokeLineJoinProperty = AvaloniaProperty.Register(nameof(AreaStrokeLineJoin), PenLineJoin.Miter); public static readonly StyledProperty AreaStrokeMiterLimitProperty = AvaloniaProperty.Register(nameof(AreaStrokeMiterLimit), 10.0); public static readonly StyledProperty AreaMinViableHeightProperty = AvaloniaProperty.Register(nameof(AreaMinViableHeight), double.MinValue); public static readonly StyledProperty AreaMinViableWidthProperty = AvaloniaProperty.Register(nameof(AreaMinViableWidth), double.MinValue); public static readonly StyledProperty SmoothCurveProperty = AvaloniaProperty.Register(nameof(SmoothCurve)); // XAxis public static readonly StyledProperty?> XAxisValuesProperty = AvaloniaProperty.Register?>(nameof(XAxisValues)); public static readonly StyledProperty XAxisMinimumProperty = AvaloniaProperty.Register(nameof(XAxisMinimum)); public static readonly StyledProperty XAxisLogarithmicScaleProperty = AvaloniaProperty.Register(nameof(XAxisLogarithmicScale)); public static readonly StyledProperty XAxisCurrentValueProperty = AvaloniaProperty.Register(nameof(XAxisCurrentValue), double.NaN); public static readonly StyledProperty XAxisOpacityProperty = AvaloniaProperty.Register(nameof(XAxisOpacity), 1.0); public static readonly StyledProperty XAxisOffsetProperty = AvaloniaProperty.Register(nameof(XAxisOffset)); public static readonly StyledProperty XAxisStrokeProperty = AvaloniaProperty.Register(nameof(XAxisStroke)); public static readonly StyledProperty XAxisStrokeThicknessProperty = AvaloniaProperty.Register(nameof(XAxisStrokeThickness), 1.0); public static readonly StyledProperty XAxisArrowSizeProperty = AvaloniaProperty.Register(nameof(XAxisArrowSize), 3.5); public static readonly StyledProperty XAxisMinViableHeightProperty = AvaloniaProperty.Register(nameof(XAxisMinViableHeight), double.MinValue); public static readonly StyledProperty XAxisMinViableWidthProperty = AvaloniaProperty.Register(nameof(XAxisMinViableWidth), double.MinValue); public static readonly StyledProperty XAxisPlotModeProperty = AvaloniaProperty.Register(nameof(XAxisPlotMode), AxisPlotMode.Normal); // XAxis Label public static readonly StyledProperty?> XAxisLabelsProperty = AvaloniaProperty.Register?>(nameof(XAxisLabels)); public static readonly StyledProperty XAxisLabelForegroundProperty = AvaloniaProperty.Register(nameof(XAxisLabelForeground)); public static readonly StyledProperty XAxisLabelOpacityProperty = AvaloniaProperty.Register(nameof(XAxisLabelOpacity), 1.0); public static readonly StyledProperty XAxisLabelOffsetProperty = AvaloniaProperty.Register(nameof(XAxisLabelOffset), new Point(0, 5)); public static readonly StyledProperty XAxisLabelAlignmentProperty = AvaloniaProperty.Register(nameof(XAxisLabelAlignment), TextAlignment.Center); public static readonly StyledProperty XAxisLabelAngleProperty = AvaloniaProperty.Register(nameof(XAxisLabelAngle)); public static readonly StyledProperty XAxisLabelFontFamilyProperty = AvaloniaProperty.Register(nameof(XAxisLabelFontFamily), FontFamily.Default); public static readonly StyledProperty XAxisLabelFontStyleProperty = AvaloniaProperty.Register(nameof(XAxisLabelFontStyle)); public static readonly StyledProperty XAxisLabelFontWeightProperty = AvaloniaProperty.Register(nameof(XAxisLabelFontWeight), FontWeight.Normal); public static readonly StyledProperty XAxisLabelFontSizeProperty = AvaloniaProperty.Register(nameof(XAxisLabelFontSize), 10.0); // XAxis Title public static readonly StyledProperty XAxisTitleProperty = AvaloniaProperty.Register(nameof(XAxisTitle)); public static readonly StyledProperty XAxisTitleForegroundProperty = AvaloniaProperty.Register(nameof(XAxisTitleForeground)); public static readonly StyledProperty XAxisTitleOpacityProperty = AvaloniaProperty.Register(nameof(XAxisTitleOpacity), 1.0); public static readonly StyledProperty XAxisTitleOffsetProperty = AvaloniaProperty.Register(nameof(XAxisTitleOffset)); public static readonly StyledProperty XAxisTitleSizeProperty = AvaloniaProperty.Register(nameof(XAxisTitleSize)); public static readonly StyledProperty XAxisTitleAlignmentProperty = AvaloniaProperty.Register(nameof(XAxisTitleAlignment), TextAlignment.Center); public static readonly StyledProperty XAxisTitleAngleProperty = AvaloniaProperty.Register(nameof(XAxisTitleAngle)); public static readonly StyledProperty XAxisTitleFontFamilyProperty = AvaloniaProperty.Register(nameof(XAxisTitleFontFamily), FontFamily.Default); public static readonly StyledProperty XAxisTitleFontStyleProperty = AvaloniaProperty.Register(nameof(XAxisTitleFontStyle)); public static readonly StyledProperty XAxisTitleFontWeightProperty = AvaloniaProperty.Register(nameof(XAxisTitleFontWeight), FontWeight.Normal); public static readonly StyledProperty XAxisTitleFontSizeProperty = AvaloniaProperty.Register(nameof(XAxisTitleFontSize), 12.0); // YAxis public static readonly StyledProperty?> YAxisValuesProperty = AvaloniaProperty.Register?>(nameof(YAxisValues)); public static readonly StyledProperty YAxisLogarithmicScaleProperty = AvaloniaProperty.Register(nameof(YAxisLogarithmicScale)); public static readonly StyledProperty YAxisMinValueProperty = AvaloniaProperty.Register(nameof(YAxisMinValue), double.NaN); public static readonly StyledProperty YAxisMaxValueProperty = AvaloniaProperty.Register(nameof(YAxisMaxValue), double.NaN); public static readonly StyledProperty YAxisCurrentValueProperty = AvaloniaProperty.Register(nameof(YAxisCurrentValue), double.NaN); public static readonly StyledProperty YAxisOpacityProperty = AvaloniaProperty.Register(nameof(YAxisOpacity), 1.0); public static readonly StyledProperty YAxisOffsetProperty = AvaloniaProperty.Register(nameof(YAxisOffset)); public static readonly StyledProperty YAxisStrokeProperty = AvaloniaProperty.Register(nameof(YAxisStroke)); public static readonly StyledProperty YAxisStrokeThicknessProperty = AvaloniaProperty.Register(nameof(YAxisStrokeThickness), 1.0); public static readonly StyledProperty YAxisArrowSizeProperty = AvaloniaProperty.Register(nameof(YAxisArrowSize), 3.5); public static readonly StyledProperty YAxisMinViableHeightProperty = AvaloniaProperty.Register(nameof(YAxisMinViableHeight), double.MinValue); public static readonly StyledProperty YAxisMinViableWidthProperty = AvaloniaProperty.Register(nameof(YAxisMinViableWidth), double.MinValue); // YAxis Label public static readonly StyledProperty?> YAxisLabelsProperty = AvaloniaProperty.Register?>(nameof(YAxisLabels)); public static readonly StyledProperty YAxisLabelForegroundProperty = AvaloniaProperty.Register(nameof(YAxisLabelForeground)); public static readonly StyledProperty YAxisLabelOpacityProperty = AvaloniaProperty.Register(nameof(YAxisLabelOpacity), 1.0); public static readonly StyledProperty YAxisLabelOffsetProperty = AvaloniaProperty.Register(nameof(YAxisLabelOffset), new Point(-5, 0)); public static readonly StyledProperty YAxisLabelAlignmentProperty = AvaloniaProperty.Register(nameof(YAxisLabelAlignment), TextAlignment.Right); public static readonly StyledProperty YAxisLabelAngleProperty = AvaloniaProperty.Register(nameof(YAxisLabelAngle)); public static readonly StyledProperty YAxisLabelFontFamilyProperty = AvaloniaProperty.Register(nameof(YAxisLabelFontFamily), FontFamily.Default); public static readonly StyledProperty YAxisLabelFontStyleProperty = AvaloniaProperty.Register(nameof(YAxisLabelFontStyle)); public static readonly StyledProperty YAxisLabelFontWeightProperty = AvaloniaProperty.Register(nameof(YAxisLabelFontWeight), FontWeight.Normal); public static readonly StyledProperty YAxisLabelFontSizeProperty = AvaloniaProperty.Register(nameof(YAxisLabelFontSize), 10.0); // YAxis Title public static readonly StyledProperty YAxisTitleProperty = AvaloniaProperty.Register(nameof(YAxisTitle)); public static readonly StyledProperty YAxisTitleForegroundProperty = AvaloniaProperty.Register(nameof(YAxisTitleForeground)); public static readonly StyledProperty YAxisTitleOpacityProperty = AvaloniaProperty.Register(nameof(YAxisTitleOpacity), 1.0); public static readonly StyledProperty YAxisTitleOffsetProperty = AvaloniaProperty.Register(nameof(YAxisTitleOffset)); public static readonly StyledProperty YAxisTitleSizeProperty = AvaloniaProperty.Register(nameof(YAxisTitleSize)); public static readonly StyledProperty YAxisTitleAlignmentProperty = AvaloniaProperty.Register(nameof(YAxisTitleAlignment), TextAlignment.Center); public static readonly StyledProperty YAxisTitleAngleProperty = AvaloniaProperty.Register(nameof(YAxisTitleAngle)); public static readonly StyledProperty YAxisTitleFontFamilyProperty = AvaloniaProperty.Register(nameof(YAxisTitleFontFamily), FontFamily.Default); public static readonly StyledProperty YAxisTitleFontStyleProperty = AvaloniaProperty.Register(nameof(YAxisTitleFontStyle)); public static readonly StyledProperty YAxisTitleFontWeightProperty = AvaloniaProperty.Register(nameof(YAxisTitleFontWeight), FontWeight.Normal); public static readonly StyledProperty YAxisTitleFontSizeProperty = AvaloniaProperty.Register(nameof(YAxisTitleFontSize), 12.0); // Cursor public static readonly StyledProperty CursorStrokeProperty = AvaloniaProperty.Register(nameof(CursorStroke)); public static readonly StyledProperty CursorStrokeThicknessProperty = AvaloniaProperty.Register(nameof(CursorStrokeThickness), 1.0); public static readonly StyledProperty CursorStrokeDashStyleProperty = AvaloniaProperty.Register(nameof(CursorStrokeDashStyle)); public static readonly StyledProperty CursorStrokeLineCapProperty = AvaloniaProperty.Register(nameof(CursorStrokeLineCap), PenLineCap.Round); public static readonly StyledProperty CursorStrokeLineJoinProperty = AvaloniaProperty.Register(nameof(CursorStrokeLineJoin), PenLineJoin.Miter); public static readonly StyledProperty CursorStrokeMiterLimitProperty = AvaloniaProperty.Register(nameof(CursorStrokeMiterLimit), 10.0); // Border public static readonly StyledProperty BorderBrushProperty = AvaloniaProperty.Register(nameof(BorderBrush)); public static readonly StyledProperty BorderThicknessProperty = AvaloniaProperty.Register(nameof(BorderThickness), 1.0); public static readonly StyledProperty BorderRadiusXProperty = AvaloniaProperty.Register(nameof(BorderRadiusX)); public static readonly StyledProperty BorderRadiusYProperty = AvaloniaProperty.Register(nameof(BorderRadiusY)); // Fields private bool _captured; // ctor static LineChart() { AffectsMeasure(AreaMarginProperty); AffectsRender( AreaMarginProperty, AreaFillProperty, AreaStrokeProperty, AreaStrokeThicknessProperty, AreaStrokeDashStyleProperty, AreaStrokeLineCapProperty, AreaStrokeLineJoinProperty, AreaStrokeMiterLimitProperty); AffectsRender( XAxisValuesProperty, XAxisLogarithmicScaleProperty, XAxisCurrentValueProperty, XAxisOpacityProperty, XAxisOffsetProperty, XAxisStrokeProperty, XAxisStrokeThicknessProperty, XAxisArrowSizeProperty, XAxisLabelsProperty, XAxisLabelForegroundProperty, XAxisLabelOpacityProperty, XAxisLabelOffsetProperty, XAxisLabelAlignmentProperty, XAxisLabelAngleProperty, XAxisLabelFontFamilyProperty, XAxisLabelFontStyleProperty, XAxisLabelFontWeightProperty, XAxisLabelFontSizeProperty, XAxisTitleProperty, XAxisTitleForegroundProperty, XAxisTitleOpacityProperty, XAxisTitleOffsetProperty, XAxisTitleSizeProperty, XAxisTitleAlignmentProperty, XAxisTitleAngleProperty, XAxisTitleFontFamilyProperty, XAxisTitleFontStyleProperty, XAxisTitleFontWeightProperty, XAxisTitleFontSizeProperty); AffectsRender( YAxisValuesProperty, YAxisLogarithmicScaleProperty, YAxisMinValueProperty, YAxisMaxValueProperty, YAxisCurrentValueProperty, YAxisOpacityProperty, YAxisOffsetProperty, YAxisStrokeProperty, YAxisStrokeThicknessProperty, YAxisArrowSizeProperty, YAxisLabelsProperty, YAxisLabelForegroundProperty, YAxisLabelOpacityProperty, YAxisLabelOffsetProperty, YAxisLabelAlignmentProperty, YAxisLabelAngleProperty, YAxisLabelFontFamilyProperty, YAxisLabelFontStyleProperty, YAxisLabelFontWeightProperty, YAxisLabelFontSizeProperty, YAxisTitleProperty, YAxisTitleForegroundProperty, YAxisTitleOpacityProperty, YAxisTitleOffsetProperty, YAxisTitleSizeProperty, YAxisTitleAlignmentProperty, YAxisTitleAngleProperty, YAxisTitleFontFamilyProperty, YAxisTitleFontStyleProperty, YAxisTitleFontWeightProperty, YAxisTitleFontSizeProperty); AffectsRender( CursorStrokeProperty, CursorStrokeThicknessProperty, CursorStrokeDashStyleProperty, CursorStrokeLineCapProperty, CursorStrokeLineJoinProperty, CursorStrokeMiterLimitProperty); AffectsRender( BorderBrushProperty, BorderThicknessProperty, BorderRadiusXProperty, BorderRadiusYProperty); } // Area public Thickness AreaMargin { get => GetValue(AreaMarginProperty); set => SetValue(AreaMarginProperty, value); } public IBrush? AreaFill { get => GetValue(AreaFillProperty); set => SetValue(AreaFillProperty, value); } public IBrush? AreaStroke { get => GetValue(AreaStrokeProperty); set => SetValue(AreaStrokeProperty, value); } public double AreaStrokeThickness { get => GetValue(AreaStrokeThicknessProperty); set => SetValue(AreaStrokeThicknessProperty, value); } public IDashStyle? AreaStrokeDashStyle { get => GetValue(AreaStrokeDashStyleProperty); set => SetValue(AreaStrokeDashStyleProperty, value); } public PenLineCap AreaStrokeLineCap { get => GetValue(AreaStrokeLineCapProperty); set => SetValue(AreaStrokeLineCapProperty, value); } public PenLineJoin AreaStrokeLineJoin { get => GetValue(AreaStrokeLineJoinProperty); set => SetValue(AreaStrokeLineJoinProperty, value); } public double AreaStrokeMiterLimit { get => GetValue(AreaStrokeMiterLimitProperty); set => SetValue(AreaStrokeMiterLimitProperty, value); } public double AreaMinViableHeight { get => GetValue(AreaMinViableHeightProperty); set => SetValue(AreaMinViableHeightProperty, value); } public double AreaMinViableWidth { get => GetValue(AreaMinViableWidthProperty); set => SetValue(AreaMinViableWidthProperty, value); } public bool SmoothCurve { get => GetValue(SmoothCurveProperty); set => SetValue(SmoothCurveProperty, value); } // XAxis public IList? XAxisValues { get => GetValue(XAxisValuesProperty); set => SetValue(XAxisValuesProperty, value); } public double? XAxisMinimum { get => GetValue(XAxisMinimumProperty); set => SetValue(XAxisMinimumProperty, value); } public bool XAxisLogarithmicScale { get => GetValue(XAxisLogarithmicScaleProperty); set => SetValue(XAxisLogarithmicScaleProperty, value); } public double XAxisCurrentValue { get => GetValue(XAxisCurrentValueProperty); set => SetValue(XAxisCurrentValueProperty, value); } public double XAxisOpacity { get => GetValue(XAxisOpacityProperty); set => SetValue(XAxisOpacityProperty, value); } public Point XAxisOffset { get => GetValue(XAxisOffsetProperty); set => SetValue(XAxisOffsetProperty, value); } public IBrush? XAxisStroke { get => GetValue(XAxisStrokeProperty); set => SetValue(XAxisStrokeProperty, value); } public double XAxisStrokeThickness { get => GetValue(XAxisStrokeThicknessProperty); set => SetValue(XAxisStrokeThicknessProperty, value); } public double XAxisArrowSize { get => GetValue(XAxisArrowSizeProperty); set => SetValue(XAxisArrowSizeProperty, value); } public double XAxisMinViableHeight { get => GetValue(XAxisMinViableHeightProperty); set => SetValue(XAxisMinViableHeightProperty, value); } public double XAxisMinViableWidth { get => GetValue(XAxisMinViableWidthProperty); set => SetValue(XAxisMinViableWidthProperty, value); } public AxisPlotMode XAxisPlotMode { get => GetValue(XAxisPlotModeProperty); set => SetValue(XAxisPlotModeProperty, value); } // XAxis Label public IList? XAxisLabels { get => GetValue(XAxisLabelsProperty); set => SetValue(XAxisLabelsProperty, value); } public IBrush? XAxisLabelForeground { get => GetValue(XAxisLabelForegroundProperty); set => SetValue(XAxisLabelForegroundProperty, value); } public double XAxisLabelOpacity { get => GetValue(XAxisLabelOpacityProperty); set => SetValue(XAxisLabelOpacityProperty, value); } public double XAxisLabelAngle { get => GetValue(XAxisLabelAngleProperty); set => SetValue(XAxisLabelAngleProperty, value); } public Point XAxisLabelOffset { get => GetValue(XAxisLabelOffsetProperty); set => SetValue(XAxisLabelOffsetProperty, value); } public TextAlignment XAxisLabelAlignment { get => GetValue(XAxisLabelAlignmentProperty); set => SetValue(XAxisLabelAlignmentProperty, value); } public FontFamily XAxisLabelFontFamily { get => GetValue(XAxisLabelFontFamilyProperty); set => SetValue(XAxisLabelFontFamilyProperty, value); } public FontStyle XAxisLabelFontStyle { get => GetValue(XAxisLabelFontStyleProperty); set => SetValue(XAxisLabelFontStyleProperty, value); } public FontWeight XAxisLabelFontWeight { get => GetValue(XAxisLabelFontWeightProperty); set => SetValue(XAxisLabelFontWeightProperty, value); } public double XAxisLabelFontSize { get => GetValue(XAxisLabelFontSizeProperty); set => SetValue(XAxisLabelFontSizeProperty, value); } // XAxis Title public string XAxisTitle { get => GetValue(XAxisTitleProperty); set => SetValue(XAxisTitleProperty, value); } public IBrush? XAxisTitleForeground { get => GetValue(XAxisTitleForegroundProperty); set => SetValue(XAxisTitleForegroundProperty, value); } public double XAxisTitleOpacity { get => GetValue(XAxisTitleOpacityProperty); set => SetValue(XAxisTitleOpacityProperty, value); } public double XAxisTitleAngle { get => GetValue(XAxisTitleAngleProperty); set => SetValue(XAxisTitleAngleProperty, value); } public Point XAxisTitleOffset { get => GetValue(XAxisTitleOffsetProperty); set => SetValue(XAxisTitleOffsetProperty, value); } public Size XAxisTitleSize { get => GetValue(XAxisTitleSizeProperty); set => SetValue(XAxisTitleSizeProperty, value); } public TextAlignment XAxisTitleAlignment { get => GetValue(XAxisTitleAlignmentProperty); set => SetValue(XAxisTitleAlignmentProperty, value); } public FontFamily XAxisTitleFontFamily { get => GetValue(XAxisTitleFontFamilyProperty); set => SetValue(XAxisTitleFontFamilyProperty, value); } public FontStyle XAxisTitleFontStyle { get => GetValue(XAxisTitleFontStyleProperty); set => SetValue(XAxisTitleFontStyleProperty, value); } public FontWeight XAxisTitleFontWeight { get => GetValue(XAxisTitleFontWeightProperty); set => SetValue(XAxisTitleFontWeightProperty, value); } public double XAxisTitleFontSize { get => GetValue(XAxisTitleFontSizeProperty); set => SetValue(XAxisTitleFontSizeProperty, value); } // YAxis public IList? YAxisValues { get => GetValue(YAxisValuesProperty); set => SetValue(YAxisValuesProperty, value); } public bool YAxisLogarithmicScale { get => GetValue(YAxisLogarithmicScaleProperty); set => SetValue(YAxisLogarithmicScaleProperty, value); } public double YAxisMinValue { get => GetValue(YAxisMinValueProperty); set => SetValue(YAxisMinValueProperty, value); } public double YAxisMaxValue { get => GetValue(YAxisMaxValueProperty); set => SetValue(YAxisMaxValueProperty, value); } public double YAxisCurrentValue { get => GetValue(YAxisCurrentValueProperty); set => SetValue(YAxisCurrentValueProperty, value); } public double YAxisOpacity { get => GetValue(YAxisOpacityProperty); set => SetValue(YAxisOpacityProperty, value); } public Point YAxisOffset { get => GetValue(YAxisOffsetProperty); set => SetValue(YAxisOffsetProperty, value); } public IBrush? YAxisStroke { get => GetValue(YAxisStrokeProperty); set => SetValue(YAxisStrokeProperty, value); } public double YAxisStrokeThickness { get => GetValue(YAxisStrokeThicknessProperty); set => SetValue(YAxisStrokeThicknessProperty, value); } public double YAxisArrowSize { get => GetValue(YAxisArrowSizeProperty); set => SetValue(YAxisArrowSizeProperty, value); } public double YAxisMinViableHeight { get => GetValue(YAxisMinViableHeightProperty); set => SetValue(YAxisMinViableHeightProperty, value); } public double YAxisMinViableWidth { get => GetValue(YAxisMinViableWidthProperty); set => SetValue(YAxisMinViableWidthProperty, value); } // YAxis Label public IList? YAxisLabels { get => GetValue(YAxisLabelsProperty); set => SetValue(YAxisLabelsProperty, value); } public IBrush? YAxisLabelForeground { get => GetValue(YAxisLabelForegroundProperty); set => SetValue(YAxisLabelForegroundProperty, value); } public double YAxisLabelOpacity { get => GetValue(YAxisLabelOpacityProperty); set => SetValue(YAxisLabelOpacityProperty, value); } public double YAxisLabelAngle { get => GetValue(YAxisLabelAngleProperty); set => SetValue(YAxisLabelAngleProperty, value); } public Point YAxisLabelOffset { get => GetValue(YAxisLabelOffsetProperty); set => SetValue(YAxisLabelOffsetProperty, value); } public TextAlignment YAxisLabelAlignment { get => GetValue(YAxisLabelAlignmentProperty); set => SetValue(YAxisLabelAlignmentProperty, value); } public FontFamily YAxisLabelFontFamily { get => GetValue(YAxisLabelFontFamilyProperty); set => SetValue(YAxisLabelFontFamilyProperty, value); } public FontStyle YAxisLabelFontStyle { get => GetValue(YAxisLabelFontStyleProperty); set => SetValue(YAxisLabelFontStyleProperty, value); } public FontWeight YAxisLabelFontWeight { get => GetValue(YAxisLabelFontWeightProperty); set => SetValue(YAxisLabelFontWeightProperty, value); } public double YAxisLabelFontSize { get => GetValue(YAxisLabelFontSizeProperty); set => SetValue(YAxisLabelFontSizeProperty, value); } // YAxis Title public string YAxisTitle { get => GetValue(YAxisTitleProperty); set => SetValue(YAxisTitleProperty, value); } public IBrush? YAxisTitleForeground { get => GetValue(YAxisTitleForegroundProperty); set => SetValue(YAxisTitleForegroundProperty, value); } public double YAxisTitleOpacity { get => GetValue(YAxisTitleOpacityProperty); set => SetValue(YAxisTitleOpacityProperty, value); } public double YAxisTitleAngle { get => GetValue(YAxisTitleAngleProperty); set => SetValue(YAxisTitleAngleProperty, value); } public Point YAxisTitleOffset { get => GetValue(YAxisTitleOffsetProperty); set => SetValue(YAxisTitleOffsetProperty, value); } public Size YAxisTitleSize { get => GetValue(YAxisTitleSizeProperty); set => SetValue(YAxisTitleSizeProperty, value); } public TextAlignment YAxisTitleAlignment { get => GetValue(YAxisTitleAlignmentProperty); set => SetValue(YAxisTitleAlignmentProperty, value); } public FontFamily YAxisTitleFontFamily { get => GetValue(YAxisTitleFontFamilyProperty); set => SetValue(YAxisTitleFontFamilyProperty, value); } public FontStyle YAxisTitleFontStyle { get => GetValue(YAxisTitleFontStyleProperty); set => SetValue(YAxisTitleFontStyleProperty, value); } public FontWeight YAxisTitleFontWeight { get => GetValue(YAxisTitleFontWeightProperty); set => SetValue(YAxisTitleFontWeightProperty, value); } public double YAxisTitleFontSize { get => GetValue(YAxisTitleFontSizeProperty); set => SetValue(YAxisTitleFontSizeProperty, value); } // Cursor public IBrush? CursorStroke { get => GetValue(CursorStrokeProperty); set => SetValue(CursorStrokeProperty, value); } public double CursorStrokeThickness { get => GetValue(CursorStrokeThicknessProperty); set => SetValue(CursorStrokeThicknessProperty, value); } public IDashStyle? CursorStrokeDashStyle { get => GetValue(CursorStrokeDashStyleProperty); set => SetValue(CursorStrokeDashStyleProperty, value); } public PenLineCap CursorStrokeLineCap { get => GetValue(CursorStrokeLineCapProperty); set => SetValue(CursorStrokeLineCapProperty, value); } public PenLineJoin CursorStrokeLineJoin { get => GetValue(CursorStrokeLineJoinProperty); set => SetValue(CursorStrokeLineJoinProperty, value); } public double CursorStrokeMiterLimit { get => GetValue(CursorStrokeMiterLimitProperty); set => SetValue(CursorStrokeMiterLimitProperty, value); } // Border public IBrush? BorderBrush { get => GetValue(BorderBrushProperty); set => SetValue(BorderBrushProperty, value); } public double BorderThickness { get => GetValue(BorderThicknessProperty); set => SetValue(BorderThicknessProperty, value); } public double BorderRadiusX { get => GetValue(BorderRadiusXProperty); set => SetValue(BorderRadiusXProperty, value); } public double BorderRadiusY { get => GetValue(BorderRadiusYProperty); set => SetValue(BorderRadiusYProperty, value); } } }