使用Syncfusion for Xamarin.Forms

时间:2018-12-06 19:02:00

标签: android charts xamarin.forms syncfusion

在Xamarin.Forms(16.3.0.36)中使用SfChart的最新版本时,我遇到以下问题:与之相比,ColumnSeries需要花费很多时间来呈现一个小的集合(对于几条记录的集合,它需要10秒以上的时间)到LineSeries(对于相同的集合大小,少于3秒)。

事实上,我使用调试器发现,即使在设置图形数据之前,加载包含ColumnSeries Chart的视图也是最耗时的部分。我以相同的方式使用LineSeries,并且加载速度更快。

我为ColumnSeries使用以下代码:

            <chart:SfChart x:Name="SumChart1" Margin="5,0,10,0">
            <chart:SfChart.PrimaryAxis>
                <chart:DateTimeAxis Title="Time" EdgeLabelsDrawingMode="Center"
                                    IntervalType="{Binding IntervalType, Mode=TwoWay}"
                                    x:Name="SumAxis" />
            </chart:SfChart.PrimaryAxis>

            <chart:SfChart.SecondaryAxis>
                <chart:NumericalAxis Title="{Binding SelectedVariableForGraph.Name}" />
            </chart:SfChart.SecondaryAxis>

            <chart:ColumnSeries
                x:Name="SumSeries"
                Label="Sum"
                XBindingPath="Key"
                YBindingPath="Value"
                ItemsSource="{Binding SumGraph, Mode=TwoWay}"
                ListenPropertyChange="True"
            >
                <chart:ColumnSeries.ColorModel>
                    <chart:ChartColorModel>
                        <chart:ChartColorModel.CustomBrushes>
                            <Color>Orange</Color>
                        </chart:ChartColorModel.CustomBrushes>
                    </chart:ChartColorModel>
                </chart:ColumnSeries.ColorModel>
            </chart:ColumnSeries>
        </chart:SfChart>

我只对修复Android版本感兴趣。 我已经使用HAXM Android模拟器和Xiaomi Mi A1设备测试了该问题,结果相似(该设备似乎只快了一点)。

在寻找此问题的答案时,我发现“ SfChart默认将Android和iOS中的列系列呈现为FastColumn系列”(https://www.syncfusion.com/forums/138607/fastcolumnbitmapseries-on-sfchart-xforms),但是在我看来,这似乎不起作用(对于Android)。

有什么我想念的吗?

编辑: 我正在使用SfTabItem显示图表(页面中有3 ColumnSeries和1 Series图表)。 X轴的类型为DateTime,Y轴的类型为double。这个细节似乎是导致问题的原因

2 个答案:

答案 0 :(得分:0)

我们最终无法重现所报告的问题,我们已经准备了一个样本,可以从下面的链接下载该样本。

Sample

由于我们不知道您的确切应用方案,因此我们最终无法重现此问题,因此,您可以通过根据您的应用程序以及复制过程修改样本来恢复我们的状态。这将有助于我们进一步调查,并尽早为您提供更好的解决方案。

答案 1 :(得分:0)

我可以在最后复制报告的场景,我想告诉您,在您的样本中,所有图表的时间间隔类型均为天,但界限值却有所不同,例如月和年,因此渲染需要太多时间。因为计算了自动间隔,并且绘制了这么多年以来的所有时间的网格线。因此,您必须根据给定的数据设置 Interval IntervalType ,否则您确实需要进行任何设置,图表将根据数据自动计算间隔和间隔类型。我们基于此修改了您的示例,可以从下面的链接下载该示例。

sample