Xamarin формы обновления пользовательского интерфейса - PullRequest
0 голосов
/ 07 июня 2018

Я новичок в формах ксамарина.Поэтому у меня возникли проблемы с обновлением пользовательского интерфейса.Я использую Device.BeginInvokeOnMainThread для обновления значения в Dashboard.Но это не работает.Обновляет значение только при перезагрузке страницы:

public Dashboard ()
        {
            InitializeComponent ();
            Init();
        }

        public void Init()
        {
            Task.Run(async () =>
            {
                float speed = MainPage.acceleration;
                if (speed < 0)
                {
                    speed = speed * (-1);
                }
                Device.BeginInvokeOnMainThread(() =>
                {
                    Value.Text = speed.ToString();
                });
            });
        } 

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Джейсон имеет право.Конструктор выполняет только инициализацию страницы.OnAppearing - это событие жизненного цикла страницы, которое срабатывает непосредственно перед тем, как страница становится видимой.Он будет срабатывать только после загрузки страницы, а не когда вы выходите из приложения и возвращаетесь к нему.Если вы хотите справиться с выходом из приложения и возвращением к нему, вам следует изучить события жизненного цикла приложения.Проверьте События жизненного цикла страницы в xamarin.forms .

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

0 голосов
/ 07 июня 2018

, если вы хотите сделать одноразовое обновление, поместите его в OnAppearing ()

protected override void OnAppearing() {

  base.OnAppearing();

  float speed = MainPage.acceleration;

  if (speed < 0)
  {
    speed = speed * (-1);
  }
  Value.Text = speed.ToString()
}
...