Xamarin, ListView, Как я могу узнать, когда ListView прокручивается до середины? - PullRequest
0 голосов
/ 14 апреля 2020

Я хочу вызвать один метод, когда ListView прокручивается до середины.

У меня есть ListView

<ListView x:Name="myListView">
...
</ListView>

У этого ListView есть подписчик

myListView.Scrolled += ScrolledListener;

Прослушиватель myListView.Scrolled:

public void ScrolledListener(object sender, ScrolledEventArgs args)
{
...
var scrollView = (ListView)sender;
bool isNeededMoreParticipants =
 args.ScrollY >
 (int)(scrollView.Height - scrollView.Height / 2); //Height - is not what I expected. I need the maximum size of ScrollY
...
}

Как узнать, когда ListView прокручивается до середины?

1 Ответ

1 голос
/ 14 апреля 2020

Похоже, вы хотите получить размер содержимого ListView. Вы можете заранее установить высоту ViewCell или RowHeight (установить как значение c или использовать привязку данных), например

<ListView x:Name="MyListView" Scrolled="ListView_Scrolled" ItemsSource="{Binding MyItems}" RowHeight="60">

или

<DataTemplate>

   <ViewCell>

      <StackLayout HeightRequest="{Binding xxx}">



      </StackLayout>

   </ViewCell>

</DataTemplate>

И в коде позади

private void ListView_Scrolled(object sender, ScrolledEventArgs e)
{
   var rowHeight = MyListView.RowHeight;  // you need to set it in xaml in advance , otherwise it will always -1 .If you bind the height in code behind , use the height instead of it

   double contentHeight = rowHeight * MyItems.Count;  // content height of listview

   double positionY = e.ScrollY;

   // if(...) handle your logic 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...