Как я могу создать бесконечную прокрутку в Xamarin - PullRequest
0 голосов
/ 13 октября 2019

Итак, у меня есть это приложение, где я пытаюсь создать круговую прокрутку, например, при прокрутке вниз, я получаю:

... - Предмет 4 - Предмет 5 - Предмет 1 - Предмет 2 - Предмет 3 - Предмет4 - Элемент 5 - Элемент 1 - Элемент 2 - Элемент 3 - ...

Это изображение того, что я пытаюсь enter image description here

Таким образом, прокрутка будетбесконечен, потому что одни и те же предметы будут повторяться. Кто-нибудь может мне помочь с этим?

1 Ответ

0 голосов
/ 14 октября 2019

Вы можете сослаться на Бесконечная прокрутка

. Вот простой пример:

установить Nuget Xamarin.Forms.Extended.InfiniteScrolling

axml страницы:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:scroll="clr-namespace:Xamarin.Forms.Extended;assembly=Xamarin.Forms.Extended.InfiniteScrolling"
         x:Class="InfiniteScrollingApp.SimplePage">

    <!-- a normal list view -->
    <ListView  CachingStrategy="RecycleElement" ItemsSource="{Binding Items}">

        <!-- the behavior that will enable infinite scrolling -->
        <ListView.Behaviors>
            <scroll:InfiniteScrollBehavior />
        </ListView.Behaviors>

        <!-- the row definition -->
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                        <Label Text="{Binding Name}" />
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>


    </ListView>

Модель представления:

public class MyViewModel
{
    public InfiniteScrollCollection<MyData> Items { get; set; }

    public MyViewModel()
    {

        var items = new InfiniteScrollCollection<MyData>();
        MyData data1 = new MyData() { Name = "1" };
        MyData data2 = new MyData() { Name = "2" };
        MyData data3 = new MyData() { Name = "3" };
        MyData data4 = new MyData() { Name = "4" };
        MyData data5 = new MyData() { Name = "5" };
        MyData data6 = new MyData() { Name = "6" };
        MyData data7 = new MyData() { Name = "7" };
        MyData data8 = new MyData() { Name = "8" };
        MyData data9 = new MyData() { Name = "9" };
        MyData data10 = new MyData() { Name = "10" };
        MyData data11 = new MyData() { Name = "11" };
        MyData data12 = new MyData() { Name = "12" };
        items.Add(data1);
        items.Add(data2);
        items.Add(data3);
        items.Add(data4);
        items.Add(data5);
        items.Add(data6);
        items.Add(data7);
        items.Add(data8);
        items.Add(data9);
        items.Add(data10);
        items.Add(data11);

        items.Add(data12);
        Items = items;
        //var dataSource = new MyDataSource();

        Items = new InfiniteScrollCollection<MyData>
        {
            OnLoadMore = async () =>
            {

                return items;
            }
        };
        // load the initial data
        Items.LoadMoreAsync();
    }
}

модель:

public class MyData
{
    public string Name { set; get; }
}

эффектниже:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...