繁体   English   中英

如果用户按xamarin形式的硬件后退按钮,如何退订MessagingCenter?

[英]How to Unsubscribe MessagingCenter if user press hardware back button in xamarin forms?

在按钮单击事件中,我订阅了消息传递中心

    bool isDataReceived = false;
    MessagingCenter.Subscribe<Dimention>(this, "Print", (sender) =>
                                    {
                                        isDataReceived = true;
                                        PopulateData(sender);
                                        if (isDataReceived)
                                        {
                                            MessagingCenter.Unsubscribe<Dimention>(this, "Print");
                                        }
                                    });

我正在从弹出窗口发送数据

MessagingCenter.Send<Dimention>(data, "Print");

但是,当用户按下硬件后退按钮而不发送值时,如何退订消息传递中心。

您可以覆盖BackButton事件

 protected override bool OnBackButtonPressed()
        {    

              base.OnBackButtonPressed();

              MessagingCenter.Unsubscribe<Dimention>(this, "Print");    
              return false;    

        }

您还可以通过将代码添加到OnDisappearing方法中来确保退订消息传递中心:

protected override void OnDisappearing()
{
    base.OnDisappearing();
    MessagingCenter.Unsubscribe<Dimention>(this, "Print");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM