BoldSignEasily embed eSignatures in your .NET applications. Free sandbox with native SDK available.
<chart:PieSeries ItemsSource="{Binding Data}" XBindingPath="XValue" YBindingPath="YValue" GroupMode="Value" GroupTo="60">
<chart:PieSeries.DataMarker>
<chart:ChartDataMarker>
<chart:ChartDataMarker.LabelTemplate>
<DataTemplate>
<StackLayout Orientation="Vertical">
<Label FontSize="12" TextColor="White" HorizontalOptions="CenterAndExpand" Text="{Binding Converter={StaticResource converter}, ConverterParameter='Label'}"/>
<Label FontSize="12" TextColor="White" HorizontalOptions="CenterAndExpand" Text="{Binding Converter={StaticResource converter}}"/>
</StackLayout>
</DataTemplate>
</chart:ChartDataMarker.LabelTemplate>
</chart:ChartDataMarker>
</chart:PieSeries.DataMarker>
</chart:PieSeries> |
public class DataMarkerConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (parameter != null && parameter.ToString() == "Label")
{
if (value is List<object>)
{
return "Others";
}
else
{
if (value != null)
{
return (value as Model).XValue;
}
}
}
else
{
if (value is List<object>)
{
return (value as List<object>).Sum(item => (item as Model).YValue).ToString();
}
else
{
if (value != null)
{
return (value as Model).YValue;
}
}
}
return null;
}
}
|
private void SfChart_SelectionChanged(object sender, ChartSelectionEventArgs e)
{
if (e.SelectedDataPointIndex >= 0)
{
object data = DependencyService.Get<IChartDependencyService>().GetDataPoint(e.SelectedSeries as PieSeries, e.SelectedDataPointIndex);
if (data is List<object>)
{
//Grouped segment is selected.
this.DisplayAlert("Selected Grouped Data", "Yes", "Ok");
}
}
}
public interface IChartDependencyService
{
object GetDataPoint(PieSeries series,int selectedIndex);
}
|
public class AndroidDependencyService : IChartDependencyService
{
public object GetDataPoint(PieSeries series, int selectedIndex)
{
var nativeSeries = (Native.PieSeries)SfChartRenderer.GetNativeObject(typeof(PieSeries), series);
PropertyInfo datapoint = typeof(Native.PieSegment).GetProperty("DataPoint", BindingFlags.NonPublic | BindingFlags.Instance);
return datapoint.GetValue(nativeSeries.Segments[selectedIndex], null);
}
}
|
public class iOSDependencyService : IChartDependencyService
{
public object GetDataPoint(PieSeries series, int selectedIndex)
{
var nativeSeries = (Native.SFPieSeries)SfChartRenderer.GetNativeObject(typeof(PieSeries), series);
PropertyInfo datapoint = typeof(Native.SFPieSegment).GetProperty("DataPoint", BindingFlags.NonPublic | BindingFlags.Instance);
return datapoint.GetValue(nativeSeries.Segments[selectedIndex], null);
}
}
|
public class UWPDependencyService : IChartDependencyService
{
public object GetDataPoint(PieSeries series, int selectedIndex)
{
var nativeSeries = (Native.ChartSeriesBase)SfChartRenderer.GetNativeObject(typeof(ChartSeries), series as ChartSeries);
var segments = typeof(Native.ChartSeriesBase).GetField("Segments", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(nativeSeries) as ObservableCollection<Native.ChartSegment>;
return segments[selectedIndex].Item;
}
} |