1. 程式人生 > >c#開發移動APP-Xamarin入門擴展剖析

c#開發移動APP-Xamarin入門擴展剖析

number 數據綁定 ... 移動app odin list 數據集 XML 如何

  上節將Phoneword應用程序擴展到包含第二個屏幕,該屏幕可以跟蹤應用程序的撥打歷史

Navigation

  Xamarin.Form提供了一個內置的導航模型,用於管理一堆頁面的導航和用戶體驗,這個模型實現了Page對象的後進先出(LIFO)堆棧,要從一個頁面移動到另一個頁面,應用程序將把一個新頁面推到這個堆棧上,要返回到前一個頁面,應用程序將從堆棧中彈出當前頁面。

  Xamarin.Forms有一個NavigationPage類,用於管理Page對象的堆棧,NavigationPage類還將在頁面頂部添加一個導航欄,該欄將顯示標題和與平臺相匹配返回到前一個頁面回退按鈕,下面的代碼示例展示了如何用

NavigationPage包裹應用程序的第一個頁面。

public App ()
   {
        ...
        MainPage = new NavigationPage (new MainPage ());
    }

  所有ContentPage實例都有一個Navigation屬性,該屬性公開了修改頁面堆棧的方法。只有當應用程序包含NavigationPage時,才能調用這些方法。要導航到CallHistoryPage,需要調用PushAsync方法,如下面的代碼示例所示:

async void OnCallHistory(object sender, EventArgs e)
{
    
await Navigation.PushAsync (new CallHistoryPage ()); }

  這將導致新的CallHistoryPage對象被推送到導航堆棧上。要以編程方式返回到原始頁面,CallHistoryPage對象必須調用PopAsync方法,如下面的代碼示例所示:

await Navigation.PopAsync();//彈出當前頁

Data Binding

  數據綁定用於簡化Xamarin.Form應用程序顯示及與數據交互。它在用戶界面和底層應用程序之間建立了連接。BindableObject類包含了很多支持數據綁定的基礎設施。數據綁定定義了兩個對象之間的關系。源對象將提供數據。目標對象將使用

(經常顯示)來自源對象的數據。在Phoneword應用程序中,綁定目標是顯示電話號碼的ListView控件,而PhoneNumbers集合是綁定源。

PhoneNumbers集合是在App類中聲明和初始化的,

public partial class App : Application
{
   public static List<string> PhoneNumbers { get; set; }

   public App ()
   {
     PhoneNumbers = new List<string>();
     ...
   }
   ...
}

ListView實例在CallHistoryPage類中聲明並初始化,

<?xml version="1.0" encoding="UTF-8"?>
<ContentPage ...
             xmlns:local="clr-namespace:Phoneword;assembly=Phoneword"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             ...>
    ...
    <ContentPage.Content>
       ...
       <ListView ItemsSource="{x:Static local:App.PhoneNumbers}" />
       ...
    </ContentPage.Content>
</ContentPage>

  在本例中,ListView控件將顯示ItemsSource屬性綁定的IEnumerable數據集合。集合可以是任何類型的對象,但默認情況下,ListView將使用每個項的ToString方法來顯示該項。x:Static靜態標記擴展用於指示ItemsSource屬性將綁定到App類的靜態PhoneNumbers屬性,該屬性可以在local命名空間中找到

c#開發移動APP-Xamarin入門擴展剖析