【问题标题】:Xamarin forms update UIXamarin 表单更新 UI
【发布时间】:2018-06-07 00:50:01
【问题描述】:

我是 xamarin 表单的新手。因此,我在更新 UI 时遇到了麻烦。我正在使用 Device.BeginInvokeOnMainThread 来更新仪表板上的值。但它不起作用。它仅在重新加载页面时更新值:

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();
                });
            });
        } 

【问题讨论】:

  • 在 UI 可见之前,您正在构造函数中运行单个任务。这不会完成任何事情。
  • 那么有什么帮助呢?

标签: c# android user-interface xamarin begininvoke


【解决方案1】:

如果你只想做一次更新,把它放在 OnAppearing() 中

protected override void OnAppearing() {

  base.OnAppearing();

  float speed = MainPage.acceleration;

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

【讨论】:

    【解决方案2】:

    杰森说得对。构造函数只执行页面的初始化。 OnAppearing 是在页面变得可见之前触发的页面生命周期事件。它只会在页面加载到视图中时触发,而不是在您离开应用程序并返回时触发。如果您想处理离开应用程序并返回应用程序,您应该查看应用程序生命周期事件。查看Page lifecycle events in xamarin.forms

    对此进行测试的简洁方法可能包括覆盖每个页面和应用生命周期事件。您可以在基本调用中添加断点,以直接了解事情的流程。

    【讨论】:

      猜你喜欢
      • 2017-11-22
      • 2019-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-07
      • 2015-02-02
      • 1970-01-01
      • 2017-06-05
      相关资源
      最近更新 更多