diff --git a/maui/src/Charts/Area/Partial/CartesianChartArea.cs b/maui/src/Charts/Area/Partial/CartesianChartArea.cs index 3378cb9f..8136a0b7 100644 --- a/maui/src/Charts/Area/Partial/CartesianChartArea.cs +++ b/maui/src/Charts/Area/Partial/CartesianChartArea.cs @@ -61,7 +61,7 @@ internal void CalculateSbsPosition() } SideBySideSeriesPosition = []; - var cartesianSeriesCollection = visibleSeries.OfType(); + var cartesianSeriesCollection = visibleSeries.OfType().ToList(); foreach (var cartesianSeries in cartesianSeriesCollection) { diff --git a/maui/src/Charts/Behaviors/ChartTrackballBehavior.cs b/maui/src/Charts/Behaviors/ChartTrackballBehavior.cs index e745b40e..2636917d 100644 --- a/maui/src/Charts/Behaviors/ChartTrackballBehavior.cs +++ b/maui/src/Charts/Behaviors/ChartTrackballBehavior.cs @@ -1707,11 +1707,12 @@ float FindLeastXValue(float pointX, float pointY) } + var leastXPointsSet = new HashSet(leastXPointsInfo); var copyList = PointInfos.ToList(); foreach (var pointInfo in copyList) { - if (!leastXPointsInfo.Contains(pointInfo)) + if (!leastXPointsSet.Contains(pointInfo)) { RemoveTrackballInfo(pointInfo); } diff --git a/maui/src/Charts/Behaviors/DataPointSelectionBehavior.cs b/maui/src/Charts/Behaviors/DataPointSelectionBehavior.cs index d4468dfe..bcd00c10 100644 --- a/maui/src/Charts/Behaviors/DataPointSelectionBehavior.cs +++ b/maui/src/Charts/Behaviors/DataPointSelectionBehavior.cs @@ -125,4 +125,4 @@ internal override void SelectionIndexesPropertyChanged(List newValue) #endregion } -} \ No newline at end of file +} diff --git a/maui/src/Charts/Behaviors/SeriesSelectionBehavior.cs b/maui/src/Charts/Behaviors/SeriesSelectionBehavior.cs index ef593595..ed02834e 100644 --- a/maui/src/Charts/Behaviors/SeriesSelectionBehavior.cs +++ b/maui/src/Charts/Behaviors/SeriesSelectionBehavior.cs @@ -135,4 +135,4 @@ internal override void SelectionIndexesPropertyChanged(List newValue) #endregion } -} \ No newline at end of file +} diff --git a/maui/src/Charts/Series/AreaSeries.cs b/maui/src/Charts/Series/AreaSeries.cs index 8404322b..9a2e8d40 100644 --- a/maui/src/Charts/Series/AreaSeries.cs +++ b/maui/src/Charts/Series/AreaSeries.cs @@ -439,8 +439,9 @@ public override int GetDataPointIndex(float pointX, float pointY) } List segPoints = []; - foreach (AreaSegment segment in _segments.Cast()) + foreach (ChartSegment item in _segments) { + AreaSegment segment = (AreaSegment)item; var points = segment.FillPoints; if (points != null) { diff --git a/maui/src/Charts/Series/BoxAndWhiskerSeries.cs b/maui/src/Charts/Series/BoxAndWhiskerSeries.cs index 1fc07dd8..8f6fded7 100644 --- a/maui/src/Charts/Series/BoxAndWhiskerSeries.cs +++ b/maui/src/Charts/Series/BoxAndWhiskerSeries.cs @@ -1109,8 +1109,18 @@ internal override void GenerateSegments(SeriesView seriesView) if (outliers.Count > 0) { - actualMinimum = Math.Min(outliers.Min(), actualMinimum); - actualMaximum = Math.Max(outliers.Max(), actualMaximum); + for (int j = 0; j < outliers.Count; j++) + { + if (outliers[j] < actualMinimum) + { + actualMinimum = outliers[j]; + } + + if (outliers[j] > actualMaximum) + { + actualMaximum = outliers[j]; + } + } } if (xValues != null) diff --git a/maui/src/Charts/Series/CircularSeries.cs b/maui/src/Charts/Series/CircularSeries.cs index fd05989e..abce0c42 100644 --- a/maui/src/Charts/Series/CircularSeries.cs +++ b/maui/src/Charts/Series/CircularSeries.cs @@ -534,8 +534,9 @@ protected internal override void DrawDataLabel(ICanvas canvas, Brush? fillColor, internal void UpdateDataLabelPositions(ICanvas canvas) { - foreach (PieSegment segment in _segments.Cast()) + foreach (ChartSegment item in _segments) { + PieSegment segment = (PieSegment)item; if (IsSegmentWithinBounds(segment) && segment.IsVisible) { DrawConnectorLine(canvas, segment); diff --git a/maui/src/Charts/Series/FinancialSeriesBase.cs b/maui/src/Charts/Series/FinancialSeriesBase.cs index 057d7a7b..7a1cc1fa 100644 --- a/maui/src/Charts/Series/FinancialSeriesBase.cs +++ b/maui/src/Charts/Series/FinancialSeriesBase.cs @@ -700,8 +700,9 @@ internal override void DrawDataLabels(ICanvas canvas) ChartDataLabelStyle labelStyle = dataLabelSettings.LabelStyle; - foreach (HiLoOpenCloseSegment dataLabel in _segments.Cast()) + foreach (ChartSegment item in _segments) { + HiLoOpenCloseSegment dataLabel = (HiLoOpenCloseSegment)item; if (!dataLabel.InVisibleRange || dataLabel.IsZero) { continue; diff --git a/maui/src/Charts/Series/RangeAreaSeries.cs b/maui/src/Charts/Series/RangeAreaSeries.cs index 0372b7a9..54ba2ddb 100644 --- a/maui/src/Charts/Series/RangeAreaSeries.cs +++ b/maui/src/Charts/Series/RangeAreaSeries.cs @@ -558,8 +558,9 @@ internal override void DrawDataLabels(ICanvas canvas) ChartDataLabelStyle labelStyle = DataLabelSettings.LabelStyle; - foreach (RangeAreaSegment dataLabel in _segments.Cast()) + foreach (ChartSegment item in _segments) { + RangeAreaSegment dataLabel = (RangeAreaSegment)item; if (dataLabel == null || dataLabel.XValues == null || dataLabel.HighValues == null || dataLabel.LowValues == null) { return; diff --git a/maui/src/Charts/Series/ScatterSeries.cs b/maui/src/Charts/Series/ScatterSeries.cs index 6222ad16..e9b9b216 100644 --- a/maui/src/Charts/Series/ScatterSeries.cs +++ b/maui/src/Charts/Series/ScatterSeries.cs @@ -492,9 +492,10 @@ void CreateSegment(SeriesView seriesView, double x, double y, int index) void UpdateScatterType(ShapeType type) { - foreach (ScatterSegment item in _segments.Cast()) + foreach (ChartSegment item in _segments) { - item.Type = type; + ScatterSegment scatterItem = (ScatterSegment)item; + scatterItem.Type = type; } } diff --git a/maui/src/Charts/Series/StepAreaSeries.cs b/maui/src/Charts/Series/StepAreaSeries.cs index 801bb5bb..08ec1fd1 100644 --- a/maui/src/Charts/Series/StepAreaSeries.cs +++ b/maui/src/Charts/Series/StepAreaSeries.cs @@ -92,8 +92,9 @@ public override int GetDataPointIndex(float pointX, float pointY) List segPoints = []; - foreach (StepAreaSegment segment in _segments.Cast()) + foreach (ChartSegment item in _segments) { + StepAreaSegment segment = (StepAreaSegment)item; var points = segment.FillPoints; if (points != null) {