源码地址:https://github.com/l2999019/DemoAppgit
能够Star一下,随意 - -github
没啥好说的.开干吧.微信
今天的内容比较简单.app
就几个弹出框和内置的消息通信中心.异步
如图:async
xamarin帮咱们把各个系统的弹出窗作了2个统一的类.ide
1.DisplayAlert函数
2.DisplayActionSheetpost
咱们就来一一看看
DisplayAlert,其实很简单,就是一个相似于HTML的alert的弹出层.固然,你也能够做为commit来使用,代码以下:
alert的使用方式:
private void Button_Clicked(object sender, EventArgs e) { DisplayAlert("提示", "这里是提示信息", "肯定"); }
commit的使用方式:
private async void Button_Clicked_3(object sender, EventArgs e) { var date = await DisplayAlert("提示", "你肯定要选择这个按钮么?", "肯定","取消"); await DisplayAlert("提示", "选中了"+date, "肯定"); }
DisplayActionSheet实际上是一个多选的弹出层,你能够设置其中的选项,而后自定义下面的按钮,代码以下:
private async void Button_Clicked_1(object sender, EventArgs e) { var action = await DisplayActionSheet("请选择分享到的位置", "取消", null, "QQ空间", "微博", "微信"); await DisplayAlert("提示", "选中了" + action, "肯定"); }
第一个参数是标题内容,第二第三个参数为按钮,后面的参数为选项
下面是带2个按钮的代码例子:
private async void Button_Clicked_2(object sender, EventArgs e) { var action = await DisplayActionSheet("请选择内容", "取消", "删除", "QQ空间", "微博", "微信"); await DisplayAlert("提示", "选中了" + action, "肯定"); }
MessagingCenter
容许视图模型和其余组件进行通讯,而不须要知道任何关于彼此的信息.
嗯,上面一句是官方的解释.
MessagingCenter分2个角色,一个叫作订阅者(Subscriber),一个叫作发送者(Sender).
意思就已经很明确了,订阅者先订阅消息,而后发送者根据业务状况,来发送消息,让订阅者接收,以方便作一些事情.
MessagingCenter能够用于:用户交互(如按钮点击),系统事件(如控制更改状态)或其余事件(如异步下载完成)。
订阅者可能须要接收以改变用户界面的外观,保存数据或触发其余操做。
MessagingCenter有如下API,咱们就来一一讲解.
Subscribe固然就是订阅的方法了,里面有3个必填参数,订阅对象,信息,回调函数.
Send固然就是发送,2-3个参数,第一个是发送者,信息,回调函数的参数..
Unsubscribe 就是取消订阅.
举个栗子,我须要在跳转页面的同时传递一个消息给一个Page,并根据参数改变他的界面,那么咱们就在接收的Page中建立一个订阅.
代码以下:
MessagingCenter.Subscribe<MainPage, string>(this, "Hello", (obj, item) => { DisplayAlert("提示", "传过来的参数为" + item, "肯定"); this.lab.Text = item; lab.TextColor = Color.Red; });
而后,咱们在前一个页面跳转以后发送这个消息.
private void Button_Clicked_10(object sender, EventArgs e) { Navigation.PushAsync(new DisplayingAlertsPages()); MessagingCenter.Send<MainPage, string>(this, "Hello", "消息~~~"); }
在Page的释放事件中取消这个订阅
protected override void OnDisappearing() { MessagingCenter.Unsubscribe<MainPage, string>(this, "Hello"); base.OnDisappearing(); }
最终的效果如图: