BoldSignEasily embed eSignatures in your .NET applications. Free sandbox with native SDK available.
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>
… |