Как загрузить данные в TabbedPage при нажатии на вкладку? - PullRequest
0 голосов
/ 29 декабря 2018

Я использую TabbedPage для навигации по вкладкам.Все мои Page классы имеют только пустой конструктор по умолчанию, и я загружаю свои данные в метод OnAppearing.У меня 5 вкладок.Как только я нажимаю на вторую вкладку, также вызываются методы OnAppearing 3-й, 4-й и 5-й страниц.

Как обеспечить загрузку данных только при нажатии на вкладку?

1 Ответ

0 голосов
/ 01 января 2019

Решение:

Вы можете получить индекс currentPage в методе OnCurrentPageChanged И если индекс равен 1 (вторая страница), используйте messagecenter для отправки сообщения наpage.Refer следующий код.

на странице с вкладками

protected override void OnCurrentPageChanged()
{
   base.OnCurrentPageChanged();

   int index = Children.IndexOf(CurrentPage);

   if (index == 1)
   {
      MessagingCenter.Send<Object>(this, "click_second_tab");
   }

   else if (index == 2)
   {
      MessagingCenter.Send<Object>(this, "click_third_tab");
   }


} 

на второй странице. Переместите код, который загружает данные из onAppearing в конструктор

public MyPage1()
{

  //...
  MessagingCenter.Subscribe<Object>(this, "click_second_tab", (obj) =>
  {
     //load your data here

      Console.WriteLine("11111");
  });

} 
...