将两个Listview合并到带有标题的单个Listview中

时间:2018-12-27 09:08:26

标签: listview xamarin.forms

如何结合使用xamarin.forms中的标头分隔的两个列表视图。到目前为止,我已经知道我可以使用Listviews组来实现此目的。但是我不确定如何实现这一点。所有通过静态数据实现它的源都可以,但是在我的情况下Listview项是动态的。 / p>

这是通过静态数据实现的方式。

List<GroupListModel> Groups = new List<GroupListModel>
            {
                new GroupListModel("list1","list1")
                {
                 new UserModel
                 {
                     FirstName = "list 1-1",
                     LastName= "12",
                 },
                },
                new GroupListModel("list2","list2")
                {
                    new UserModel
                    {
                        FirstName = "list2-1",
                        LastName= "1",
                    },
                    new UserModel
                    {
                        FirstName = "list2-2",
                        LastName= "2",
                    },
                    new UserModel
                    {
                        FirstName = "list2-3",
                        LastName= "3",
                    },
                    new UserModel
                    {
                        FirstName = "list 2-4",
                        LastName= "4",
                    },
                },
            };

            All = Groups;

这是我的群组列表模型,

public class GroupListModel:List<UserModel>
{
    public string Title { get; set; }
    public string ShortName { get; set; }
    public string Subtitle { get; set; }
    public GroupListModel(string title, string shortName)
    {
        Title = title;
        ShortName = shortName;
    }

    public List<UserModel> Listofusers;

    public static List<GroupListModel> All { set; get; }
},

现在,我想要的是list1中的数据必须是动态的,即List1 listitems应该包含从服务器调用返回的数据列表。

我想要这样的东西。 I want a listview like this

有人可以帮我吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

IsGroupingEnabled设置为true

<ListView ItemsSource="{Binding GroupList}"  IsGroupingEnabled="True">
    <ListView.GroupHeaderTemplate>
        <DataTemplate>
            <ViewCell>
                <Label Text="{Binding Title}" />
            </ViewCell>
        </DataTemplate>
    </ListView.GroupHeaderTemplate>

    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <StackLayout Orientation="Horizontal" Spacing="5">
                   <Label Text="{Binding FirstName}" />
                   <Label Text="{Binding LastName}" />
                </StackLayout>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>