如何在Xamarin表单的分组ListView中创建页脚模板

时间:2019-06-03 15:13:07

标签: forms listview xamarin footer

因此,我在Xamarin项目中拥有一个列表视图,该列表启用了IsGroupingEnabled属性。项目和项目的页眉可以正常工作,但是我无法设置页脚模板。 我需要创建一个列表视图,项目必须由以下组成: -标头:用户信息。 -项目:子项目列表。 -页脚:“操作”按钮(共享,评论等)。 这是我的代码的一部分:

我正在使用Xamarin Form和C#。

型号:

public class Post
{
    public long PostID { get; set; }
    public string Name { get; set; }
    public List<OptionDefault> OptionsDefault { get; set; }
}
public class OptionDefault
{
    public long OptionTypeID { get; set; }
    public string SubItemName { get; set; }
}

ViewModel

public class PostsViewModel
{
    public InfiniteScrollCollection<Grouping<Post, OptionDefault>> Items { get; set; } = new InfiniteScrollCollection<Grouping<Post, OptionDefault>>();
    public IPostsService repository;

    public PostsViewModel(INavigation navigation)
    {
        repository = new PostsService();

        Items = new InfiniteScrollCollection<Grouping<Post, OptionDefault>>
        {
            OnLoadMore = async () => await GetItems()
        };
        Items.LoadMoreAsync();
    }
    async Task<List<Grouping<Post, OptionDefault>>> GetItems()
    {
        IsWorking = true;
        List<Grouping<Post, OptionDefault>> items = new List<Grouping<Post, OptionDefault>>();
        try
        {
            // load the next page
            var lists = await repository.GetList(Items.Count);
            foreach (var item in lists)
            {
                for (int i = 0; i < item.OptionsDefault.Count; i++)
                {
                    if ((i + 1) == item.OptionsDefault.Count)
                        item.OptionsDefault[i].LastItem = true;
                }
                var group = new Grouping<Post, OptionDefault>(item, item.OptionsDefault);
                items.Add(group);
            }
        }
        catch (Exception ex)
        {
            ErrorHelper.RegisterError(ex);
        }
        finally
        {
            IsWorking = false;
        }
        return items;
    }

.xaml:

<ListView ItemsSource="{Binding Items}"                     
            IsGroupingEnabled="True">
        <ListView.GroupHeaderTemplate>
            <DataTemplate>
                <ViewCell>
                    <StackLayout Margin="5,15,5,0">
                        <Label Text="{Binding Key.User.UserName}" />
                    </StackLayout>
                </ViewCell>
            </DataTemplate>
        </ListView.GroupHeaderTemplate>
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <StackLayout Margin="5,0,5,5">
                        <Label Text="{Binding SubItemName}" />
                    </StackLayout>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

我尝试过使用footertemplate,但是它不起作用:

<ListView.FooterTemplate>
            <DataTemplate>
                <StackLayout Margin="5,0,5,5">
                    <Label Text="This is my footer" />
                </StackLayout>
            </DataTemplate>
        </ListView.FooterTemplate>

3 个答案:

答案 0 :(得分:0)

不是<ListView.FooterTemplate>,而是<ListView.Footer>

<ListView.Footer>
    <StackLayout Margin="5,0,5,5">
        <Label Text="This is my footer" />
    </StackLayout>
</ListView.Footer>

有关更多信息,请参见: https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/listview/customizing-list-appearance#headers-and-footers

答案 1 :(得分:0)

无论是<ListView.Footer>还是<ListView.FooterTemplate>,显示位置都相同,就在ListView的底部。 当前,xamarin表单的ListView不具有此属性,以使每个项目都具有页脚。 也许您需要重新考虑应用程序的需求和UI设计。

答案 2 :(得分:0)

CollectionView现在在Xamarin.Forms中可用。它同时具有GroupHeaderTemplateGroupFooterTemplate。您可以使用它来显示数据组。这样做的代码与ListView