Xamarin表单消息中心不起作用

时间:2017-11-08 23:40:04

标签: c# xamarin xamarin.forms

我是C#和Xamarin Forms的新手,我正在尝试在我的项目中实现Messaging Center。我正在尝试推送模态页面,然后将模式中的数据发送回原始页面。但是,它并没有像我预期的那样工作。

以下是主页的代码:

run()

这是在模态页面上按下按钮时执行的代码,其中message是一个字符串[]:

MessagingCenter.Subscribe<Info, string[]>(this, "nameUpdate", (sender2, name) =>
        {
            dataName.Text = name[0];
        });

await Navigation.PushModalAsync(new Info(dataName.Text));

MessagingCenter.Unsubscribe<Info, string[]>(this, "nameUpdate");

MyPage是原始页面的名称,Info是被称为模态的页面的名称。我没有收到任何错误,只是订阅块中的语句没有执行。

提前谢谢。

2 个答案:

答案 0 :(得分:0)

尝试删除unsubscribe并交换这两个的顺序:

await Navigation.PopModalAsync();
MessagingCenter.Send<Info, string[]>(this, "nameUpdate", message);

似乎unsubscribe发生在send之前。

答案 1 :(得分:-1)

如果您像我一样是xamarin的新手,则在进行MessagingCenter时,您可以提供订户(接收者)的名字。如果要使用,请订阅或订阅 。从发送方传递到订阅方(接收方)的任何参数,应在订阅语法中指定发送方名称的地方

这种简单的无知阻碍了Xamarin Forms Messaging Center无法正常工作。

  

用于MessagingCenter的API很简单:

Subscribe<TSender> (object subscriber, string message, Action<TSender> callback, TSender source = null) 
Subscribe<TSender, TArgs> (object subscriber, string message, Action<TSender, TArgs> callback, TSender source = null) 
Send<TSender> (TSender sender, string message) 
Send<TSender, TArgs> (TSender sender, string message, TArgs args) Unsubscribe<TSender, TArgs> (object subscriber, string message) Unsubscribe<TSender> (object subscriber, string message)