Thread ID: |
Created: |
Updated: |
Platform: |
Replies: |
151354 | Feb 7,2020 02:21 PM UTC | Feb 20,2020 07:06 AM UTC | Xamarin.Forms | 8 |
![]() |
Tags: SfChart |
public class TrackballBehaviorExt : ChartTrackballBehavior
{
private bool isLongPressActivated = false;
protected override void OnLongPress(float pointX, float pointY)
{
base.OnLongPress(pointX, pointY);
isLongPressActivated = true;
}
protected override void OnTouchUp(float pointX, float pointY)
{
base.OnTouchUp(pointX, pointY);
if (isLongPressActivated)
{
isLongPressActivated = false;
//Write your logic here
}
}
} |
public class ChartTrackballBehaviorExt : ChartTrackballBehavior
{
public ChartExt chart { get; set; }
public ChartTrackballBehaviorExt()
{
}
protected override void OnLongPress(float pointX, float pointY)
{
chart.TrackballVisible = true;
base.OnLongPress(pointX, pointY);
}
//For Android this override OnTouchUp will work fine after LongPress
protected override void OnTouchUp(float pointX, float pointY)
{
base.OnTouchUp(pointX, pointY);
}
//For iOS after long press TouchUp method called here
public void TouchUp(float pointX, float pointY)
{
if (chart != null)
{
chart.TrackballVisible = false;
//check your logic here for iOS
}
}
} |
class CustomChartRenderer : SfChartRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<SfChart> e)
{
base.OnElementChanged(e);
var formsChart = Element as Syncfusion.SfChart.XForms.SfChart;
for (int i = 0; i < formsChart.ChartBehaviors.Count; i++)
{
if (formsChart.ChartBehaviors[i] is Syncfusion.SfChart.XForms.ChartTrackballBehavior)
{
var formsTrackball = formsChart.ChartBehaviors[i] as
Syncfusion.SfChart.XForms.ChartTrackballBehavior; Control.Behaviors.Remove((SFChartBehavior)SfChartRenderer.GetNativeObject(typeof
(Syncfusion.SfChart.XForms.ChartTrackballBehavior), formsTrackball));
CustomTrackballBehavior customTrackball = new CustomTrackballBehavior();
customTrackball.FormsBehavior = formsTrackball;
var properties =
SfChartRenderer.GetPropertiesChanged(typeof(Syncfusion.SfChart.XForms.ChartTrackballBehavior),
formsTrackball);
foreach (var name in properties)
{
ChartTrackballBehaviorMapping.OnChartTrackballBehaviorPropertiesChanged(name,
formsTrackball, customTrackball);
}
SfChartRenderer.SetNativeObject(typeof(Syncfusion.SfChart.XForms.ChartTrackballBehavior),
formsTrackball, customTrackball);
Control.Behaviors.Insert(i, customTrackball);
}
}
}
}
public class CustomTrackballBehavior : ChartTrackballBehaviorHelper
{
public override void LongPressWithGestureRecognizer(UILongPressGestureRecognizer
longPressGestureRecognizer)
{
base.LongPressWithGestureRecognizer(longPressGestureRecognizer);
var locationInChart = longPressGestureRecognizer.LocationInView(Chart);
if (UIGestureRecognizerState.Ended == longPressGestureRecognizer.State)
{
(FormsBehavior as ChartTrackballBehaviorExt).TouchUp((float)locationInChart.X,
(float)locationInChart.Y);
}
}
} |
…
<local:ChartExt x:Name="chart" HorizontalOptions="FillAndExpand"
VerticalOptions="FillAndExpand">
….
<chart:SfChart.ChartBehaviors>
<local:ChartTrackballBehaviorExt chart="{x:Reference chart}"
ActivationMode="LongPress">
</local:ChartTrackballBehaviorExt>
</chart:SfChart.ChartBehaviors>
</local:ChartExt>
… |
This post will be permanently deleted. Are you sure you want to continue?
Sorry, An error occured while processing your request. Please try again later.
This page will automatically be redirected to the sign-in page in 10 seconds.