C#使用Xamarin開發可移植移動應用(5.進階篇顯示彈出窗口與通訊中心)附源碼


前言

系列目錄

C#使用Xamarin開發可移植移動應用目錄

源碼地址: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();
        }

 

最終的效果如圖:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM