博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#使用Xamarin开发可移植移动应用(5.进阶篇显示弹出窗口与通讯中心)附源码
阅读量:5818 次
发布时间:2019-06-18

本文共 2888 字,大约阅读时间需要 9 分钟。

前言

系列目录

源码地址:

可以Star一下,随意 - -

说点什么..

没啥好说的.开干吧.

 

今天的学习内容?

今天的内容比较简单.

就几个弹出框和内置的消息通讯中心.

如图:

 

正文

 

1.xamarin中的弹出窗

xamarin帮我们把各个系统的弹出窗做了2个统一的类.

 1.DisplayAlert

 2.DisplayActionSheet

我们就来一一看看

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, "确定");        }

 

 

2.Xamarin中的消息通讯中心( MessagingCenter)

  MessagingCenter允许视图模型和其他组件进行通信,而不需要知道任何关于彼此的信息.

       嗯,上面一句是官方的解释.

       MessagingCenter分2个角色,一个叫做订阅者(Subscriber),一个叫做发送者(Sender).

       意思就已经很明确了,订阅者先订阅消息,然后发送者根据业务情况,来发送消息,让订阅者接收,以方便做一些事情.

       MessagingCenter可以用于:用户交互(如按钮点击),系统事件(如控制更改状态)或其他事件(如异步下载完成)。

       订阅者可能需要接收以改变用户界面的外观,保存数据或触发其他操作。

       

       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)

       Subscribe当然就是订阅的方法了,里面有3个必填参数,订阅对象,信息,回调函数.

       Send当然就是发送,2-3个参数,第一个是发送者,信息,回调函数的参数..

       Unsubscribe 就是取消订阅.

       

       举个栗子,我需要在跳转页面的同时传递一个消息给一个Page,并根据参数改变他的界面,那么我们就在接收的Page中创建一个订阅.

       代码如下:

        

MessagingCenter.Subscribe
(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
(this, "Hello", "消息~~~"); }

在Page的释放事件中取消这个订阅

protected override void OnDisappearing()        {            MessagingCenter.Unsubscribe
(this, "Hello"); base.OnDisappearing(); }

 

最终的效果如图:

 

转载于:https://www.cnblogs.com/GuZhenYin/p/7405209.html

你可能感兴趣的文章
HCNA——RIP的路由汇总
查看>>
zabbix监控php状态(四)
查看>>
定时任务的创建
查看>>
实战Django:小型CMS Part2
查看>>
原创]windows server 2012 AD架构试验系列 – 16更改DC计算机名
查看>>
统治世界的十大算法
查看>>
linux svn安装和配置
查看>>
SSH中调用另一action的方法(chain,redirect)
查看>>
数据库基础
查看>>
表格排序
查看>>
关于Android四大组件的学习总结
查看>>
java只能的round,ceil,floor方法的使用
查看>>
由于无法创建应用程序域,因此未能执行请求。错误: 0x80070002 系统找不到指定的文件...
查看>>
新开的博客,为自己祝贺一下
查看>>
puppet任务计划
查看>>
【CQOI2011】放棋子
查看>>
采用JXL包进行EXCEL数据写入操作
查看>>
一周总结
查看>>
将txt文件转化为json进行操作
查看>>
线性表4 - 数据结构和算法09
查看>>