我是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是被称为模态的页面的名称。我没有收到任何错误,只是订阅块中的语句没有执行。
提前谢谢。
答案 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)