Определить, достиг ли flowlistview дна

#xaml #xamarin.forms

#xaml #xamarin.forms

Вопрос:

Я хочу перезагрузить элементы в свой flowlistview, когда он достиг своего дна. поэтому мне понадобится функция, которая запускается после достижения конца.

У меня настроен этот flowlistview:

   <flv:FlowListView  
            Grid.Column="1"
            FlowItemAppearing="listview_allAds_FlowItemAppearing"

            FlowColumnCount="2"
            IsPullToRefreshEnabled="True"
            Refreshing="listview_allAds_Refreshing"
            Margin="0,10,0,0"
            VerticalScrollBarVisibility="Never"
            FlowItemTapped="listview_allAds_FlowItemTapped"
            HasUnevenRows="True"
            x:Name="listview_allAds" >

            <flv:FlowListView.FlowColumnTemplate>
                <DataTemplate>

                    <ContentView Padding="4,3,3,4"> <!--only way to set padding-->

                        <Frame BorderColor="#ffffff" 
                               HasShadow="True"        
                               Padding="0"
                               CornerRadius="{OnPlatform Android=5, iOS=5}">

                            <Grid ...>
                        </Frame>
                    </ContentView>
                </DataTemplate>
            </flv:FlowListView.FlowColumnTemplate>
        </flv:FlowListView>
 

Я понимаю, что вы можете многое сделать с помощью «команд», но я не уверен, как это сделать.

Можете ли вы мне здесь помочь?

Спасибо!

Ответ №1:

Вы могли бы использовать FlowItemAppearing . Событие, которое вы установили в своем коде, работает хорошо.

  async void listview_allAds_ItemAppearing(object sender, ItemVisibilityEventArgs e)
    {            

        if (e.ItemIndex ==  infos.Count/2)//2 is the FlowColumnCount of your FlowListView  
        {

            await DisplayAlert("Alert", "Scrolled to the bottom", "OK");
        }
    }
 

Комментарии:

1. ItemIndex всегда будет смещен на list.count . так что либо добавьте единицу в индекс, либо вычтите из count.