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();}
?
最終的效果如圖:
相關文章:?
C#使用Xamarin開發可移植移動應用(1.入門與Xamarin.Forms頁面),附源碼
.NET Standard@Xamarin.Forms
C#使用Xamarin開發可移植移動應用(2.Xamarin.Forms布局,本篇很長,注意)附源碼
C#使用Xamarin開發可移植移動應用(3.Xamarin.Views控件)附源碼
C#使用Xamarin開發可移植移動應用(4.進階篇MVVM雙向綁定和命令綁定)附源碼
原文地址:http://www.cnblogs.com/GuZhenYin/p/7405209.html
.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注
總結
以上是生活随笔為你收集整理的C#使用Xamarin开发可移植移动应用(5.进阶篇显示弹出窗口与通讯中心)附源码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET Core Razor页面
- 下一篇: Orleans稍微复杂的例子—互动