首页 > 解决方案 > 在自定义 ViewCell 中显示 Microcharts.Chart

问题描述

我有一个带有自定义 ViewCell 的 ListView。ViewCell 包含 Microcharts.Chart。我使用绑定并尝试找到一种方法来根据某些条件在 ListView 项中显示特定图表(因为现在没有图表)。

这是 XAML 代码的一部分:

        <ListView x:Name="blocksList"
              HasUnevenRows="True"
              ItemsSource="{Binding MainPageBlocks}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <ViewCell.View>

                        <Grid ColumnSpacing="0" RowSpacing="0">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="40*" />
                                <ColumnDefinition Width="15*" />
                                <ColumnDefinition Width="45*" />
                                </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="*" />
                                <RowDefinition Height="*" />
                                <RowDefinition Height="*" />
                            </Grid.RowDefinitions>                      
                    ... some elements

                        <forms:ChartView
                            x:name="LineChart"   
                            Grid.Column="2" 
                            Grid.Row="0" 
                            Grid.RowSpan="3"
                            BackgroundColor="Transparent"
                            Chart="{Binding MyChart}">

                    </ViewCell.View>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

图表条目:

        private readonly List<Microcharts.Entry> _entries = new List<Microcharts.Entry>()
        {
            new Microcharts.Entry(200)
            {
                Color=SKColor.Parse("#FF0033")
            },

            new Microcharts.Entry(400)
            {
                Color=SKColor.Parse("#FF8000")
            },

            new Microcharts.Entry(300)
            {
                Color=SKColor.Parse("#FFE600")
            },

            new Microcharts.Entry(250)
            {
                Color=SKColor.Parse("#1AB34D")
            },

            new Microcharts.Entry(650)
            {
                Color=SKColor.Parse("#1A66FF")
            },

            new Microcharts.Entry(500)
            {
                Color=SKColor.Parse("#801AB3")
            }
        };

至于后面的代码,我尝试了不同的方法:

LineChart.BindingContext = new Microcharts.LineChart { Entries = _entries };

然后我尝试绑定 ChartViews 列表:

public List<Microcharts.Chart> ChartCollection { get; set; }

    public Microcharts.Chart LineChart1
    {
        get
        {
            return new LineChart()
            {
                Entries = _entries,
                LineMode = LineMode.Straight,
                PointMode = PointMode.Circle,
                PointSize = 20,
                BackgroundColor = SKColors.Transparent,
            };
        }
    }

    public Microcharts.Chart LineChart2
    {
        get
        {
            return new LineChart()
            {
                Entries = _entries,
                LineMode = LineMode.Straight,
                PointMode = PointMode.Circle,
                PointSize = 20,
                BackgroundColor = SKColors.Transparent,
            };
        }
    }

ChartCollection = new List<Chart>();
ChartCollection.Add(LineChart1);
ChartCollection.Add(LineChart2);

编译时没有错误,chartView 不存在,其余视图可见。我应该怎么做才能在 ViewCell 中显示 ChartView?

提前致谢!

标签: listviewxamarin.formscommandparameter

解决方案


推荐阅读