C#使用Xamarin开发可移植移动应用(5.进阶篇显示弹出窗口与通讯中心)附源码

前言

源码地址:https://github.com/l2999019/DemoApp

可以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<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();
        }

最终的效果如图:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏木子墨的前端日常

nginx反向代理跨域基本配置与常见误区

最近公司前后端分离,前端独立提供页面和静态服务很自然的就想到了用nginx去做静态服务器。同时由于跨域了,就想利用nginx的反向代理去处理一下跨域,但是在解决...

842
来自专栏Java进阶架构师

一篇文章带你详解 TCP/IP 协议(完结)

前面的第一二三章已在上篇讲解,还没看过的可以先看看:一篇文章带你详解 TCP/IP 协议

882
来自专栏java技术学习之道

单点登录原理与简单实现

1022
来自专栏java思维导图

单点登录(SSO),从原理到实现

如果你觉得文字太长,可以直接先看文末思维导图总结,小编已为你整理了作者的主要观点,供你回顾与快速阅读~

2695
来自专栏向治洪

Vue.js简介

Vue.js简介 Vue.js(读音 /vjuː/, 类似于view)是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设...

2407
来自专栏菩提树下的杨过

C#代码也VB

习惯于用某一种语言做开发,时间长了以后很多人可能会对其它语言有排斥或抵触,其实... 退一步海阔天空! 比如:经常看到有人问"如何用c# ping 网址?",园...

1966
来自专栏张戈的专栏

【ES私房菜】Logstash 安装部署及常用配置

Logstash来自ES家族,是一款强大的数据处理工具,它可以实现数据传输,格式处理,格式化输出,还有强大的插件功能,常用于日志处理。

7440
来自专栏Java学习123

LoadRunner11-遇到问题及解决办法

4345
来自专栏葡萄城控件技术团队

SoapUI实践:自动化测试、压力测试、持续集成

1162
来自专栏代码世界

Cookie、Session登陆验证相关介绍和用法

一、Cookie和Session   首先、HTTP协议是无状态的;所谓的无状态是指每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系...

3607

扫码关注云+社区