微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

xamarin 表单 - 填充集合视图内的列表视图

如何解决xamarin 表单 - 填充集合视图内的列表视图

我正在使用 Xamarin Forms 集合视图,此集合视图内是工具包扩展器,当有人单击标题时,我已绑定命令,在此命令中,我试图在扩展器的网格内填充列表视图,请参阅代码下面:

<CollectionView x:Name="MathList" HeightRequest="320" SelectionChanged="MathList_SelectionChanged">
                <CollectionView.ItemTemplate>
                    <DataTemplate>
                        <xct:Expander Command="{Binding GetMathSubCatgories}">
                            <xct:Expander.Header>
                                <Frame Padding="10" Margin="10" HasShadow="False" BorderColor="LightGray" VerticalOptions="CenterandExpand">
                                    <StackLayout Orientation="Horizontal">
                                        <Image Source="{Binding icon}" WidthRequest="25" HeightRequest="25"></Image>
                                        <Label Text="{Binding name}" TextColor="{Binding textColor}" FontSize="Large" FontAttributes="Bold" HeightRequest="35" VerticalOptions="CenterandExpand"></Label>
                                    </StackLayout>
                                </Frame>
                            </xct:Expander.Header>
                            <Grid Padding="10">
                                <Grid.ColumnDeFinitions>
                                    <ColumnDeFinition Width="Auto" />
                                </Grid.ColumnDeFinitions>
                                <ListView x:Name="SubCatgories" ItemsSource="{Binding subTaskClass}">
                                    <ListView.ItemTemplate>
                                        <DataTemplate>
                                            <StackLayout>
                                                <Frame Padding="10" Margin="10" HasShadow="False" BorderColor="LightGray" VerticalOptions="CenterandExpand">
                                                    <StackLayout Orientation="Horizontal">
                                                        <Label Text="aaa" FontAttributes="Bold" HeightRequest="35" VerticalOptions="CenterandExpand"></Label>
                                                    </StackLayout>
                                                </Frame>
                                            </StackLayout>
                                        </DataTemplate>
                                    </ListView.ItemTemplate>
                                </ListView>
                            </Grid>
                        </xct:Expander>
                    </DataTemplate>
                </CollectionView.ItemTemplate>
            </CollectionView>

但是在我后面的代码中,当我尝试像这样填充列表视图时:

public ICommand GetMathSubCatgories => new Command(() =>
        {
            Console.Write("Here");

            GetSubTasks(taskcategoryid);

        });

        public async void GetSubTasks(int taskcategory)
        {
            SubCatgories.ItemsSource = await webService.GetMathSubTasks(taskcategory);
        }

它说 SubCatgories 不可用。我将如何在数据集合中填充列表视图。

这个方法我也试过,还是不行:

<CollectionView x:Name="MathList" HeightRequest="320" SelectionChanged="MathList_SelectionChanged">
                <CollectionView.ItemTemplate>
                    <DataTemplate>
                        <xct:Expander Command="{Binding GetMathSubCatgories}">
                            <xct:Expander.Header>
                                <Frame Padding="10" Margin="10" HasShadow="False" BorderColor="LightGray" VerticalOptions="CenterandExpand">
                                    <StackLayout Orientation="Horizontal">
                                        <Image Source="{Binding icon}" WidthRequest="25" HeightRequest="25"></Image>
                                        <Label Text="{Binding name}" TextColor="{Binding textColor}" FontSize="Large" FontAttributes="Bold" HeightRequest="35" VerticalOptions="CenterandExpand"></Label>
                                    </StackLayout>
                                </Frame>
                            </xct:Expander.Header>
                            <Grid Padding="10">
                                <Grid.ColumnDeFinitions>
                                    <ColumnDeFinition Width="Auto" />
                                </Grid.ColumnDeFinitions>
                                <ListView x:Name="SubCatgories" ItemsSource="{Binding subCategories}">
                                    <ListView.ItemTemplate>
                                        <DataTemplate>
                                            <StackLayout>
                                                <Frame Padding="10" Margin="10" HasShadow="False" BorderColor="LightGray" VerticalOptions="CenterandExpand">
                                                    <StackLayout Orientation="Horizontal">
                                                        <Label Text="{Binding name}" FontAttributes="Bold" HeightRequest="35" VerticalOptions="CenterandExpand"></Label>
                                                    </StackLayout>
                                                </Frame>
                                            </StackLayout>
                                        </DataTemplate>
                                    </ListView.ItemTemplate>
                                </ListView>
                            </Grid>
                        </xct:Expander>
                    </DataTemplate>
                </CollectionView.ItemTemplate>
            </CollectionView>

这是我用于 collectionView 的类

public class TaskClass
    {

        WebServiceClass webService = new WebServiceClass();

        List<SubTaskClass> subTasks = new List<SubTaskClass>();

        public int taskcategoryid { get; set; }
        public string type { get; set; }
        public string name { get; set; }
        public string icon { get; set; }
        public int sortOrder { get; set; }
        public string textColor
        {
            get
            {
                if (name == "Addition")
                {
                    return "#02cc9d";
                }
                else if (name == "Subtraction")
                {
                    return "black";
                }
                else if (name == "Divison")
                {
                    return "#fa5156";
                }
                else
                {
                    return "#23a0b6";
                }
            }
        }
        public List<SubTaskClass> subCategories
        {
            get
            {
                GetSubTasks(taskcategoryid);

                return subTasks;
            }
        }

        public async void GetSubTasks(int taskcategory)
        {
            subTasks = await webService.GetMathSubTasks(taskcategory);
        }
    }

这里是子任务类:

public class SubTaskClass
    {
        public int id { get; set; }
        public int taskcategory { get; set; }
        public string name { get; set; }
    }

解决方法

根据您的代码,我做了一个示例,您可以看看。

output = True

截图:

enter image description here

注意:ListView 中的数据项称为单元格,在 ListView 中添加 ViewCell。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。