Как создать шаблон нижнего колонтитула в сгруппированном ListView в форме Xamarin - PullRequest
0 голосов
/ 03 июня 2019

Итак, у меня есть представление списка в проекте 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>

Ответы [ 2 ]

0 голосов
/ 04 июня 2019

Будь то <ListView.Footer> или <ListView.FooterTemplate>, позиция отображения одинакова, прямо в нижней части ListView. В настоящее время ListView формы xamarin не имеет этого свойства, чтобы каждый элемент имел нижний колонтитул. Возможно, вам нужно переосмыслить требования и дизайн интерфейса вашего приложения.

0 голосов
/ 03 июня 2019

Это не <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

...