public override async Task Action(MessageResult message) { var call = message.GetData <CallbackData>(); await message.ConfirmAction(); await message.DeleteMessage(); message.Handled = true; if (call.Value == "testform1") { var tf = new TestForm(); await this.NavigateTo(tf); } else if (call.Value == "alert") { AlertDialog ad = new AlertDialog("This is a message", "Ok"); ad.ButtonClicked += async(s, en) => { var fto = new TestForm2(); await this.NavigateTo(fto); }; await this.NavigateTo(ad); } else if (call.Value == "confirm") { ConfirmDialog pd = new ConfirmDialog("Please confirm", new ButtonBase("Ok", "ok"), new ButtonBase("Cancel", "cancel")); pd.ButtonClicked += async(s, en) => { var tf = new TestForm2(); await pd.NavigateTo(tf); }; await this.NavigateTo(pd); } else if (call.Value == "prompt") { PromptDialog pd = new PromptDialog("Please tell me your name ?"); pd.Completed += async(s, en) => { await this.Device.Send("Hello " + pd.Value); }; await this.OpenModal(pd); } }