Skip to content

Commit 35b9bc6

Browse files
Merge pull request #151 from aruljenithberkmans/main
Fix the trackball label line draw over the trackball label template in MAUI Charts.
2 parents 3c33c23 + 87da7cf commit 35b9bc6

File tree

2 files changed

+23
-18
lines changed

2 files changed

+23
-18
lines changed

maui/src/Charts/Area/CartesianChartArea.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ public CartesianChartArea(SfCartesianChart chart)
107107
_axisLayout.InputTransparent = true;
108108
Add(_annotationLayout);
109109
Add(_behaviorLayout);
110+
_behaviorLayout.ZIndex = this.Children.Count;
110111
BatchCommit();
111112
}
112113

@@ -137,6 +138,10 @@ protected override void UpdateAreaCore()
137138
AreaBounds.SubtractThickness(PlotAreaMargin),
138139
_cartesianPlotArea._chart.TitleHeight);
139140

141+
//Need to set the trackballview padding to display the trackball template exact position
142+
if (cartesianChart is SfCartesianChart chart)
143+
chart._trackballView.Padding = PlotAreaMargin;
144+
140145
UpdateVisibleSeries(); //series create segment logics.
141146

142147
if (cartesianChart is SfCartesianChart sfChart)

maui/src/Charts/Behaviors/ChartTrackballBehavior.cs

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -772,7 +772,7 @@ public void Show(float pointX, float pointY)
772772
/// </summary>
773773
public void Hide()
774774
{
775-
if (CartesianChart?.BehaviorLayout.Children.Count > 0)
775+
if (CartesianChart?._trackballView.Children.Count > 0)
776776
{
777777
RemoveTrackballTemplateInfo(CartesianChart);
778778
}
@@ -959,7 +959,7 @@ internal void DrawElements(ICanvas canvas, Rect dirtyRect)
959959

960960
foreach (var item in _axisPointInfos)
961961
{
962-
if (ShowLabel && !item.HasTrackballAxisTemplate)
962+
if (!item.HasTrackballAxisTemplate)
963963
{
964964
item.Helper.Draw(canvas);
965965
}
@@ -1097,9 +1097,9 @@ void UpdateTrackballPointInfos(float pointX, float pointY)
10971097
{
10981098
foreach (var info in PreviousPointInfos)
10991099
{
1100-
if (CartesianChart.BehaviorLayout.Contains(info.ContentTemplateView))
1100+
if (info.ContentTemplateView != null && CartesianChart._trackballView.Contains(info.ContentTemplateView))
11011101
{
1102-
CartesianChart.BehaviorLayout.Remove(info.ContentTemplateView);
1102+
CartesianChart._trackballView.Remove(info.ContentTemplateView);
11031103
}
11041104
}
11051105

@@ -1110,9 +1110,9 @@ void UpdateTrackballPointInfos(float pointX, float pointY)
11101110
{
11111111
foreach (var info in _previousAxisPointInfos)
11121112
{
1113-
if (CartesianChart.BehaviorLayout.Contains(info.AxisTemplateView))
1113+
if (CartesianChart._trackballView.Contains(info.AxisTemplateView) && info.AxisTemplateView != null)
11141114
{
1115-
CartesianChart.BehaviorLayout.Remove(info.AxisTemplateView);
1115+
CartesianChart._trackballView.Remove(info.AxisTemplateView);
11161116
}
11171117
}
11181118

@@ -1252,7 +1252,7 @@ void GenerateAxisTrackballInfos(float leastX)
12521252
{
12531253
Duration = double.NaN
12541254
};
1255-
CartesianChart.BehaviorLayout.Add(trackballTemp);
1255+
CartesianChart._trackballView.Add(trackballTemp);
12561256
trackballTemp.Helper.CanNosePointTarget = true;
12571257
trackballTemp.Background = TrackballBackground;
12581258
ContentList.Add(trackballTemp);
@@ -1868,9 +1868,9 @@ void RemoveTrackballInfo(TrackballPointInfo pointInfo)
18681868
{
18691869
foreach (var info in PreviousPointInfos)
18701870
{
1871-
if (info.DataItem == pointInfo.DataItem && info.Series == pointInfo.Series)
1871+
if (info.DataItem == pointInfo.DataItem && info.Series == pointInfo.Series && info.ContentTemplateView != null)
18721872
{
1873-
CartesianChart?.BehaviorLayout.Remove(info.ContentTemplateView);
1873+
CartesianChart?._trackballView.Remove(info.ContentTemplateView);
18741874
PreviousPointInfos.Remove(info);
18751875

18761876
return;
@@ -1940,21 +1940,21 @@ bool IsRectContainsPoints(TrackballPointInfo pointInfo)
19401940

19411941
SfTooltip? GetOrCreateTrackballView(SfCartesianChart chart, TrackballPointInfo? prevTrackballInfo)
19421942
{
1943-
var trackballView = prevTrackballInfo?.ContentTemplateView as SfTooltip;
1943+
var trackballTooltip = prevTrackballInfo?.ContentTemplateView as SfTooltip;
19441944

1945-
if (trackballView == null && ShowLabel)
1945+
if (trackballTooltip == null && ShowLabel)
19461946
{
1947-
trackballView = new SfTooltip
1947+
trackballTooltip = new SfTooltip
19481948
{
19491949
Background = _actualLabelStyle.Background
19501950
};
1951-
chart.BehaviorLayout.Add(trackballView);
1952-
trackballView.Duration = double.NaN;
1953-
trackballView.Helper.CanNosePointTarget = true;
1954-
ContentList.Add(trackballView);
1951+
chart._trackballView.Add(trackballTooltip);
1952+
trackballTooltip.Duration = double.NaN;
1953+
trackballTooltip.Helper.CanNosePointTarget = true;
1954+
ContentList.Add(trackballTooltip);
19551955
}
19561956

1957-
return trackballView;
1957+
return trackballTooltip;
19581958
}
19591959

19601960
static View? GetTheTrackballTemplate(DataTemplate trackballTemplate, object bindingContext)
@@ -1977,7 +1977,7 @@ void RemoveTrackballTemplateInfo(SfCartesianChart cartesianChart)
19771977
{
19781978
foreach (var item in ContentList)
19791979
{
1980-
cartesianChart.BehaviorLayout.Remove(item);
1980+
cartesianChart._trackballView.Remove(item);
19811981
}
19821982
}
19831983
}

0 commit comments

Comments
 (0)