源碼地址: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(); }
最終的效果如圖: