【问题标题】:Refresh viewmodel in app OnResume在应用程序 OnResume 中刷新视图模型
【发布时间】:2018-02-21 06:23:26
【问题描述】:

我有一个 Xamarin Forms 应用程序,它背后有一些页面和相关的视图模型。在 OnAppearing 的页面上,它将绑定上下文设置为视图模型。视图模型调用 web api 来检索数据。 当应用程序进入睡眠状态并再次被调用时,我使用 App 类和消息中心中的 OnResume 事件来发送消息。在页面的 OnAppearing 中,我订阅了消息并将绑定上下文设置为新的视图模型。在 OnDisapearing 中,我取消订阅消息以防止它在页面不可见(另一个页面可见)时接收事件。

有没有办法从它连接的绑定上下文的页面调用方法?还是只能通过重新设置页面绑定上下文来刷新信息?

【问题讨论】:

    标签: xamarin.forms


    【解决方案1】:

    OnAppearing 事件中设置BindingContext 将在您每次导航到或返回Page 时重新分配ViewModel(取决于平台)。通常你在构造函数中设置一次ViewModel

    关于MessagingCenter。在OnPause 之前会有一个OnDisappearing 事件。因此,您将取消订阅该消息,并且很可能在OnResume 之后将不再收到消息。

    除此之外,还有与OnAppearingOnDisappearing 相关的平台特定行为。幸运的是,documentation 也涵盖了异常情况。

    我不确定我是否完全理解您的问题,但是,您可以在 Page 上从 BindingContext 调用方法:

    public partial class MyPage : Page
    {
        public MyPage()
        {
            this.BindingContext = new MyViewModel();
        }
    
        protected override void OnAppearing()
        {
            (this.BindingContext as MyViewModel)?.MyMethod();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2019-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多