我有一个饼图,我想在检查一片Pie时爆炸并做其他事情 所以我的问题是如何检索在代码中选择的索引
这是我的XAML
<chart:SfChart.PrimaryAxis>
<chart:CategoryAxis></chart:CategoryAxis>
</chart:SfChart.PrimaryAxis>
<chart:SfChart.SecondaryAxis>
<chart:NumericalAxis></chart:NumericalAxis>
</chart:SfChart.SecondaryAxis>
<chart:PieSeries PieCoefficient="0.6" MouseLeftButtonDown="pieSeries_MouseLeftButtonDown" ExplodeRadius="20" EnableAnimation="True" x:Name="pieSeries" ShowTooltip="True" chart:ChartTooltip.EnableAnimation="True" ItemsSource="{Binding Expenditure}" XBindingPath="Expense" Label="" LabelPosition="Outside" YBindingPath="Amount" Palette="Custom">
<chart:PieSeries.ColorModel>
<chart:ChartColorModel>
<chart:ChartColorModel.CustomBrushes>
<SolidColorBrush Color="Green"/>
<SolidColorBrush Color="Black"/>
<SolidColorBrush Color="Red"/>
<SolidColorBrush Color="#FFD541"/>
<SolidColorBrush Color="Plum"/>
<SolidColorBrush Color="Purple"/>
</chart:ChartColorModel.CustomBrushes>
</chart:ChartColorModel>
</chart:PieSeries.ColorModel>
<chart:PieSeries.AdornmentsInfo>
<chart:ChartAdornmentInfo AdornmentsPosition="Bottom" HorizontalAlignment="Center" VerticalAlignment="Center"
ConnectorLineStyle="{StaticResource lineStyle}" ShowConnectorLine="True"
ConnectorHeight="30" ShowLabel="True" LabelTemplate="{StaticResource labelTemplate}"
SegmentLabelContent="YValue">
</chart:ChartAdornmentInfo>
</chart:PieSeries.AdornmentsInfo>
</chart:PieSeries>
</chart:SfChart>
In the c# code I want The MouseLeftButtonDown Event to trigger the slice of the pie to explode private void pieSeries_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { }
答案 0 :(得分:0)
Syncfusion提供了SelectionBehavior,而不是尝试使用鼠标事件,这有助于选择系列中的片段。此外,还可以通过创建继承Pie Series的自定义系列来访问这些内部细分,如下面的代码段所示。
public class CustomPieSeries : PieSeries
{
public ObservableCollection<ChartSegment> PieSegments { get; set; }
public override void CreateSegments()
{
base.CreateSegments();
PieSegments = Segments;
}
}
<local:CustomPieSeries SegmentSelectionBrush="Cornsilk" ItemsSource="{Binding Expenditure}" XBindingPath="Expense" YBindingPath="Amount" EnableAnimation="True" PieCoefficient="0.6" ExplodeRadius="20" x:Name="pieSeries" ShowTooltip="True" chart:ChartTooltip.EnableAnimation="True" Label="" LabelPosition="Outside" Palette="Custom">
<local:CustomPieSeries.ColorModel>
<chart:ChartColorModel>
。 。 。 然后为Chart添加SelectionChanged事件以获取所选段的索引,如下所示。
private void SfChart_SelectionChanged_1(object sender, Syncfusion.UI.Xaml.Charts.ChartSelectionChangedEventArgs e)
{
int selectedSegmentIndex = (chart.Series[0] as CustomPieSeries).PieSegments.IndexOf(e.SelectedSegment);
}