前言

系列目录

C#使用Xamarin开发可移植移动应用目录

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

可以Star一下,随意 - -

说点什么..

没啥好说的.开干吧.

今天的学习内容?

今天的内容比较简单.

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

如图:

正文

1.xamarin中的弹出窗

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

 1.DisplayAlert

 2.DisplayActionSheet

我们就来一一看看

DisplayAlert,其实很简单,就是一个类似于HTML的alert的弹出层.当然,你也可以作为commit来使用,代码如下:

alert的使用方式:

  1. private void Button_Clicked(object sender, EventArgs e)
  2. {
  3. DisplayAlert("提示", "这里是提示信息", "确定");
  4. }

commit的使用方式:

  1. private async void Button_Clicked_3(object sender, EventArgs e)
  2. {
  3. var date = await DisplayAlert("提示", "你确定要选择这个按钮么?", "确定","取消");
  4. await DisplayAlert("提示", "选中了"+date, "确定");
  5. }

DisplayActionSheet其实是一个多选的弹出层,你可以设置其中的选项,然后自定义下面的按钮,代码如下:

  1. private async void Button_Clicked_1(object sender, EventArgs e)
  2. {
  3. var action = await DisplayActionSheet("请选择分享到的位置", "取消", null, "QQ空间", "微博", "微信");
  4. await DisplayAlert("提示", "选中了" + action, "确定");
  5. }

第一个参数是标题内容,第二第三个参数为按钮,后面的参数为选项

下面是带2个按钮的代码例子:

  1. private async void Button_Clicked_2(object sender, EventArgs e)
  2. {
  3. var action = await DisplayActionSheet("请选择内容", "取消", "删除", "QQ空间", "微博", "微信");
  4. await DisplayAlert("提示", "选中了" + action, "确定");
  5. }

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中创建一个订阅.

代码如下:

  1. MessagingCenter.Subscribe<MainPage, string>(this, "Hello", (obj, item) => {
  2.  
  3. DisplayAlert("提示", "传过来的参数为" + item, "确定");
  4. this.lab.Text = item;
  5. lab.TextColor = Color.Red;
  6.  
  7. });

然后,我们在前一个页面跳转之后发送这个消息.

  1. private void Button_Clicked_10(object sender, EventArgs e)
  2. {
  3.  
  4. Navigation.PushAsync(new DisplayingAlertsPages());
  5.  
  6. MessagingCenter.Send<MainPage, string>(this, "Hello", "消息~~~");
  7.  
  8. }

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

  1. protected override void OnDisappearing()
  2. {
  3. MessagingCenter.Unsubscribe<MainPage, string>(this, "Hello");
  4. base.OnDisappearing();
  5. }

最终的效果如图:

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

  1. C#使用Xamarin开发可移植移动应用(3.进阶篇MVVM双向绑定和命令绑定)附源码

    前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 嗯..前面 ...

  2. C#使用Xamarin开发可移植移动应用(4.进阶篇MVVM双向绑定和命令绑定)附源码

    前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 嗯..前面 ...

  3. iOS开发技巧 - 使用Alerts和Action Sheets显示弹出框

    解决方案: (Swift) 使用UIAlertController类 (Objective-C) 使用UIAlertView类 代码: (Swift) import UIKit class ViewC ...

  4. C# 使用Xamarin开发Android应用程序

    C#使用Xamarin开发可移植移动应用终章(11.获取设备信息与常用组件,开源一个可开发模版.) 摘要: 前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://gi ...

  5. C#使用Xamarin开发移动应用 ---- 系列文章

    C#使用Xamarin开发移动应用 C#使用Xamarin开发可移植移动应用终章(11.获取设备信息与常用组件,开源一个可开发模版.) C#使用Xamarin开发可移植移动应用进阶篇(10.综合演练, ...

  6. C#使用Xamarin开发可移植移动应用(1.入门与Xamarin.Forms页面),附源码

    前言 什么是Xamarin? Xamarin始创于2011年,旨在使移动开发变得难以置信地迅捷和简单. Xamarin的产品简化了针对多种平台的应用开发,包括iOS.Android.Windows P ...

  7. C#使用Xamarin开发可移植移动应用(2.Xamarin.Forms布局,本篇很长,注意)附源码

    前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 一点感想 很意外的,第一 ...

  8. C#使用Xamarin开发可移植移动应用目录

    Xamarin.Android系列 C#开发移动应用系列(1.环境搭建) C#开发移动应用系列(2.使用WebView搭建WebApp应用) C#开发移动应用系列(3.使用照相机扫描二维码+各种基础知 ...

  9. C#使用Xamarin开发可移植移动应用(3.Xamarin.Views控件)附源码

    前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. .NET ...

随机推荐

  1. FileEditor

    package JBJADV003; import java.io.*; class FileEditor { public static void main(String args[]) throw ...

  2. Struts2请求参数合法性校验机制

    在Action中通过代码执行数据校验 请求参数的输入校验途径一般分两种:客户端校验 :通过JavaScript 完成 (jquery validation插件),目的:过滤正常用户的误操作. 服务器校 ...

  3. Iterator对对象遍历

    //实例对象tables List<Table> tables = new TableManager(getApplicationContext()).queryTables();  sp ...

  4. maven工程中pom.xml的错误

    更新maven工程,出现如下错误信息. Could not calculate build plan: Failure to transfer org.apache.maven.plugins:mav ...

  5. (转)ZXing解析二维码

    1 ZXing解析二维码 上一篇文件已经说过如何用ZXing进行生成二维码和带图片的二维码,下面说下如何解析二维码 二维码的解析和生成类似,也可以参考google的一个操作类 BufferedImag ...

  6. [js] webgl 初探 - 绘制三角形

    摘要: 1. webgl 概念挺多的, 顶点着色器.片段着色器, 坐标 2. 绘制前期准备工作好多 目前看的比较好的教材: https://developer.mozilla.org/zh-CN/do ...

  7. Linux常用命令和常见问题解决<------>第一章

    查看文件下面所有的隐藏目录:ls -al ~ ls -al ~ls -a -l ~可以发现三条命令执行结果是一致的,原因:因为ls为命令 后面的参数要以空格来区分,不论几个空格 shell都会视为一体 ...

  8. 智慧航空AI大赛-阿里云算法大赛总结 第一赛季总结

    [以前的文章]最后一公里极速配送 - 阿里云算法大赛总结 总结一下新的教训 1.由于都是NP难题,获得最优解用常规的方法非常困难,对于不是算法科班出身的人来说,首先应该到网络上寻找一下论文,是否有一些 ...

  9. Linux 下实时查看日志

    Linux 下实时查看日志 cat /var/log/*.log 如果日志在更新,如何实时查看 tail -f /var/log/messages 还可以使用 watch -d -n 1 cat /v ...

  10. vue.js移动端app实战2:首页

    貌似有部分人要求写的更详细,这里多写一点vuel-cli基础的配置 什么是vue-cli? 官方的解释是:A simple CLI for scaffolding Vue.js projects, 简 ...