如果 List 中的索引超过 20,如何激活水平 ScrollView 并拉伸图表 - 使用 xamarin c#

How to activate horizontal ScrollView if indexes from List is more than 20 and stretch the chart - using xamarin c#

我有一张包含动态数据的图表。

所以我希望当列表中的索引超过 20 时水平激活 Scrollview 并且我的图表水平拉伸?

我的 .xaml 文件如下所示:

 <ScrollView>
       <StackLayout>
             <microcharts:ChartView x:Name="chartView" 
                                    HeightRequest="100"
                                    BackgroundColor="#f7f77c"/>
       </StackLayout>
 </ScrollView>

我的填充数据的 .cs 代码如下所示:

List<Entry> entries = new List<Entry>();

            for (int i = 0; i < result.Count - 1; i++)
            {
                entries.Add(
                    new Entry((float)result[i].Stoej)
                    {
                        Color = SKColor.Parse("#FF1943"),
                        Label = result[i].D.ToString(),
                        ValueLabel = result[i].Stoej.ToString()
                    });
            }

chartView.Chart = new LineChart()
                {
                    Entries = entries,
                    LineMode = LineMode.Spline,
                    LineSize = 8,
                    PointMode = PointMode.Circle,
                    PointSize = 18,
                    LabelTextSize = 40,
                    BackgroundColor = SKColors.Transparent
                };

更新:

我这样尝试,但图表没有水平拉伸:

您可以检查您的列表是否大于 20 以启用:

<ScrollView x:Name="scroll" isEnabled="false">
       <StackLayout>
             <microcharts:ChartView x:Name="chartView" 
                                    HeightRequest="100"
                                    BackgroundColor="#f7f77c"/>
       </StackLayout>
 </ScrollView>

List<Entry> entries = new List<Entry>();

            for (int i = 0; i < result.Count - 1; i++)
            {
                entries.Add(
                    new Entry((float)result[i].Stoej)
                    {
                        Color = SKColor.Parse("#FF1943"),
                        Label = result[i].D.ToString(),
                        ValueLabel = result[i].Stoej.ToString()
                    });
            }
            if(entries.Count > 20)
            {
              scroll.IsEnabled = true;
              scroll.HorizontalBarVisibility = Always;
            }

或者自动让滚动启用,所以如果列表开始跳转用户设备屏幕,滚动将被调整。

出现问题是因为ChartView的宽度是固定的(等于屏幕宽度),我们需要在后面的代码中手动设置宽度。

int itemWidth = 20;   //define by you
chartView.WidthRequest = entries.Count * itemWidth;

并且不要忘记先设置 scroll.Orientation="Horizontal"