Хотите отправить и получить сообщение только один раз? Затем вы можете использовать метод отмены подписки после получения сообщения. Например, вы можете сделать так:
MessagingCenter.Subscribe<MyPage, string>(this, "Invoke", async (sender,
arg) =>
{
await Process(arg);
MessagingCenter.Unsubscribe<MyPage>(this,"Invoke");
});
Обновлено :
В DetailPage
вы можете вызвать MessagingCenter.Subscribe
в методе OnAppearing()
и вызвать MessagingCenter.Unsubscribe
в методе OnDisappearing
, следующим образом:
protected override void OnAppearing()
{
base.OnAppearing();
MessagingCenter.Subscribe<ListPage, string>(this, "Invoke", async (sender, arg) =>
{
Debug.Write("123456----> get one msg");
DisplayAlert("Alert", "We have received a message.", "OK");
});
}
protected async override void OnDisappearing()
{
base.OnDisappearing();
MessagingCenter.Unsubscribe<ListPage,string>(this, "Invoke");
}
}
Вкл. ListPage
async void OnTap (object sender, EventArgs e)
{
await Navigation.PushAsync(new DetailPage());
try
{
MessagingCenter.Send(this, "Invoke", "Invokedtrue");
Debug.Write("123456----> send one msg");
}
catch (Exception ex)
{
Debug.Write(ex);
}
}
Примечание: при вводе ListPage
вы можете попробовать следующий код:
MainPage = new NavigationPage( new ListPage());
Эффект в IOS:

Ссылка на полную версию демо-версии здесь , вы можете проверить ее.