在ShinobiCharts中显示分层数据

时间:2013-04-10 13:30:08

标签: c# xamarin.ios shinobi

使用分层数据,我想让用户能够选择一个项目来查看其相应的子项。

示例:

Item A
-> SubItem1
-> SubItem2
-> SubItem3
Item B
-> SubItem4
-> SubItem5

PieChart显示了项目A和项目B. 如果单击Item1,则重新加载PieChart并显示SubItem1,SubItem2和SubItem3。 如果单击Item2,则重新加载PieChart并显示SubItem4和SubItem5。

如何加载数据源?我应该为项目A(ItemA,SubItem1,SubItem2,SubItem3)和项目B创建一个系列,还是应该为第一个级别(项目A,项目B)和每个子项目组创建一个?

有没有办法选择当前显示的系列?

非常感谢:)

1 个答案:

答案 0 :(得分:0)

我认为有多种方法可以做到这一点,但这里有一个非常简洁的方法。

您可以创建一个“智能”数据源,其方法可以改变它将提供给图表的数据。然后,您可以调用这些方法来响应图表交互(在图表的委托中)并重新加载图表。您的数据源界面可能如下所示:

public interface SmartDataSource
{
   void SetToShowDataForItem(Item level);
}

您可以实现方法OnToggledSelection方法,当用户点击切片时,您可以获得与他们点击的切片相对应的Item,调用'SetToShowDataForItem',并重新加载您的图表,如下所示:

protected override void OnToggledSelection (ShinobiChart chart, SChartRadialDataPoint dataPoint, SChartRadialSeries series, PointF pixelPoint)
{
    Item item = myItems[dataPoint.index];
    SmartDataSource sDataSource = chart.DataSource as SmartDataSource;

    if (sDataSource != NULL) {
        sDataSource.SetToShowDataForItem(item); 
        chart.ReloadData();
        chart.RedrawChart();
    }
}

与框架一起打包的演示也可能对您有所帮助。如果您查看本机iOS饼图演示,它们会执行类似于您尝试执行的操作,尽管它们具有辅助饼图。

祝你好运!