我有一个详细信息列表(购物篮),而在每个这些详细信息中,都是另一个列表(水果)。我想显示这些详细信息,我想到的第一件事是ListView内的ListView。但是在浏览建议时,给了我thisthis之类的结果,这些结果主要表明在Xamarin Forms中实现不是一个好主意。

目前,我正在使用FreshMvvM作为我的MvvM框架。至于我要显示的数据,我有一组篮子,每个篮子有几个水果。我也希望显示那些水果的图像,这些图像属于特定的篮子。请引用图片。

c# - Xamarin Forms-实现嵌套列表-LMLPHP

我想知道是否对此进行了改进,或者关于布局如何实现我的列表的任何其他想法,或者任何其他实现上述行为的方式。谢谢你。

到目前为止,我的代码:
XAML:

<ListView ItemsSource="{Binding Baskets}" HasUnevenRows="True">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <StackLayout>
                    <Label Text="{Binding BasketID}" />
                    <ImageCell
                        Text="{Binding FruitID}"
                        Detail="{Binding FruitName}"
                        ImageSource="{Binding ImageURL}">
                    </ImageCell>
                </StackLayout>
             </ViewCell>
         </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

类:
public class Basket
{
    public string BasketID{ get; set; }
    public string BasketName{ get; set; }
}

public class Fruit
{
    public string FruitID{ get; set; }
    public string FruitName{ get; set; }
    public string ImageURL{ get; set; }
}

最佳答案

您可以使用ListView遍历购物篮集合,而使用诸如 ItemsControl 这样的自定义控件来遍历水果收集。

它基本上是一个自定义控件,允许您通过StackLayoutItemsSource属性为ItemTemplate添加动态子级支持。您可以按原样使用控件-除非需要在此line上在其StackLayout上将Orientation属性设置为Horizontal

样本用法:

<ListView ItemsSource="{Binding Baskets}" HasUnevenRows="True">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <StackLayout>
                    <Label Text="{Binding BasketID}" />

                    <local:ItemsControl ItemsSource="{Binding Fruits}">
                        <local:ItemsControl.ItemTemplate>
                            <DataTemplate>
                                <Image Source="{Binding ImageURL}" />
                            </DataTemplate>
                        </local:ItemsControl.ItemTemplate>
                    </local:ItemsControl>
                </StackLayout>
             </ViewCell>
         </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

关于c# - Xamarin Forms-实现嵌套列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46109161/

10-11 17:16
查看更多