真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Xamarin學(xué)習(xí)筆記-Page(頁(yè)面)

本文翻譯自CodeProject文章:https://www.codeproject.com/Articles/1226447/Xamarin-Notes-Xamarin-Forms-Pages

成都創(chuàng)新互聯(lián)是一家專(zhuān)注于成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)與策劃設(shè)計(jì),全州網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:全州等地區(qū)。全州做網(wǎng)站價(jià)格咨詢(xún):18982081108

轉(zhuǎn)載請(qǐng)注明出處:葡萄城官網(wǎng),葡萄城為開(kāi)發(fā)者提供專(zhuān)業(yè)的開(kāi)發(fā)工具、解決方案和服務(wù),賦能開(kāi)發(fā)者。

引言

在之前的章節(jié),我講解了如何為Android或者iOS應(yīng)用程序開(kāi)發(fā)準(zhǔn)備環(huán)境以及Layout布局的一些基本概念。

在本章中,我將開(kāi)始在Xamarin.Forms中展示我們頁(yè)面的結(jié)構(gòu)。

Xamarin.Forms基于Page頁(yè)面的概念,我們可以使用XAML創(chuàng)建一個(gè)應(yīng)用程序來(lái)設(shè)計(jì)我們的頁(yè)面以及后臺(tái)的C#代碼。

我們有五種不同的頁(yè)面類(lèi)型:ContentPage、NavigationPage、TabbedPage、CarouselPage以及MasterDetailPage。

在Visual Studio 2017中創(chuàng)建一個(gè)新工程,我們選擇File/New/project。

Xamarin 學(xué)習(xí)筆記 - Page(頁(yè)面)

之后會(huì)彈出一個(gè)窗口以供我們選擇Visual C#/Cross-Platform,此處.NET Framework默認(rèn)將會(huì)是最新版本,在我這里Framework的版本號(hào)是4.6.2

Xamarin 學(xué)習(xí)筆記 - Page(頁(yè)面)

接下來(lái)一個(gè)窗口將顯示出來(lái)用做選擇是一個(gè)空白工程還是一個(gè)Master-Detail模式的工程(它集成了MVVM模式的應(yīng)用)。

該模板允許你選擇想要的內(nèi)容,包括你想要基于的平臺(tái),以及具體的代碼共享策略。

在過(guò)去,我們看到的界面長(zhǎng)這個(gè)樣子:

Xamarin 學(xué)習(xí)筆記 - Page(頁(yè)面)

但是在最近更新的版本Visual Studio 2015 15.5.2中,我們將看不到在“代碼共享策略”一欄有PCL(可移植類(lèi)庫(kù))的選項(xiàng),它被.NET Standard所取代。

讓我們來(lái)理解與之相關(guān)的一些概念。

PCL或者說(shuō)可移植類(lèi)庫(kù)是一組類(lèi)庫(kù),該類(lèi)庫(kù)以一組具有相同API的平臺(tái)為目標(biāo)的類(lèi)庫(kù)。更多詳細(xì)信息,請(qǐng)參見(jiàn)此鏈接。

.NET Standard:它是一組“標(biāo)準(zhǔn)”API而不是一個(gè)平臺(tái)。這里我們將不談?wù)撊魏纹脚_(tái),它僅僅是一個(gè)標(biāo)準(zhǔn)(當(dāng)前版本2.0),你的代碼可以在支持它的所有平臺(tái)上運(yùn)行。在2017年11月,.NET Standard進(jìn)入了Xamarin.Forms的項(xiàng)目模板。

因此將支持的目標(biāo)從PCL轉(zhuǎn)向.NET Standard,所帶來(lái)的不同僅僅是命名空間的指向被標(biāo)準(zhǔn)化為另外一種不同的方式。

.NET Standard 2.0的新版本致力于通過(guò)各種平臺(tái)共享代碼,現(xiàn)在Xamarin.Forms通過(guò)跨平臺(tái)應(yīng)用程序向?qū)б胨?,它將默認(rèn)使用PackageReference。我們來(lái)看看新窗口的樣子:

Xamarin 學(xué)習(xí)筆記 - Page(頁(yè)面)

以下是Github上關(guān)于.NET Standard的更多信息:

  • https://github.com/dotnet/standard

這是另外一篇很不錯(cuò)的文章,解釋相關(guān)話(huà)題:

  • https://blog.xamarin.com/building-xamarin-forms-apps-net-standard/

    • UI結(jié)構(gòu)

    • 你所看到的第一頁(yè)面就是這一個(gè),那么什么是頁(yè)面(Page)?它可以包含什么?

    • 頁(yè)面是一個(gè)主容器,在我們的示例中,它是一個(gè)ContentPage類(lèi)型的頁(yè)面。

    • 在該Page頁(yè)面中,我們將添加一個(gè)Layout布局,在本示例中我們用的是StackLayout,在該StackLayout中間,我們將添加一些view視圖。這些視圖是一組控件,在本示例中,我們用到的是:一個(gè)Label標(biāo)簽,一個(gè)Entry(輸入文本)以及一個(gè)Button按鈕。

    • Xamarin.Forms提供了許多可用的頁(yè)面,以允許提出各種不同的導(dǎo)航體驗(yàn)。為了精確的定義什么是一個(gè)Xamarin.Forms.Page的示例,官方的文檔給出了一個(gè)清晰而簡(jiǎn)明的定義。

    • 和這個(gè)鏈接中提到的那樣:

    • “頁(yè)面是占據(jù)屏幕大部分或全部并包含單個(gè)子的視覺(jué)元素。一個(gè)頁(yè)面代表Windows中的一個(gè)視圖控制器,一個(gè)Windows中的一個(gè)頁(yè)面,就像Android上的一個(gè)Activity,但不是一個(gè)活動(dòng)的Activity。”

    • 沒(méi)有任何特定功能的最簡(jiǎn)單頁(yè)面,用于開(kāi)始一個(gè)空白頁(yè)面的模板。

頁(yè)面
1. ContentPage

   

ContentPage繼承自TemplatedPage,這是Xamarin.Forms.dll中的基類(lèi):

要添加新的ContentPage,我們選擇:New Item/ContentPage.xaml

Xamarin 學(xué)習(xí)筆記 - Page(頁(yè)面)

NavigationPage

它是一種可以容納多個(gè)頁(yè)面的頁(yè)面,但只顯示一個(gè)頁(yè)面,并提供在它們之間進(jìn)行導(dǎo)航的功能。

在我們的示例中,我們實(shí)例化了一個(gè)新的NavigationPage對(duì)象,在其構(gòu)造器中,我們指定了其顯示的第一個(gè)頁(yè)面。

NavigationPage繼承自Page類(lèi)。

Xamarin 學(xué)習(xí)筆記 - Page(頁(yè)面)

當(dāng)我們需要從一個(gè)頁(yè)面導(dǎo)航到另一個(gè)頁(yè)面時(shí),我們可以有一組函數(shù)可以調(diào)用。

如果我們希望在一個(gè)按鈕動(dòng)作事件中跳轉(zhuǎn)到另一個(gè)頁(yè)面,我們使用以下代碼:

1

Navigation.PushAsync(new AboutPage())

或者該方法的異步版本:

1

Navigation.PushModalAsync(new AboutPage());

我們可以通過(guò)使用以下方法返回到前一個(gè)頁(yè)面:Navigation.PopAsync();或者Navigation.PopModalAsync();

其它可以使用的方法如下:

Navigation.PopToRootAsync();從導(dǎo)航堆棧中彈出所有堆棧的頁(yè)面,除了根Xamarin.Forms.Page頁(yè)面。

我們可以在XAML部分使用導(dǎo)航功能,如下所示:

 
 
         
             
         

在此示例中,我們創(chuàng)建一個(gè)Page,設(shè)置其標(biāo)題為Schedule,并指定一個(gè)“schedule.png”的圖標(biāo),我們頁(yè)面的內(nèi)容在內(nèi)部的MyPage1中,那是一個(gè)ContentView,而不是一個(gè)ContentPage

邀請(qǐng)你在如下鏈接了解更多相關(guān)信息:

  • https://developer.xamarin.com/api/type/Xamarin.Forms.NavigationPage/

TabbedPage

如同該類(lèi)型的名稱(chēng)一樣,它類(lèi)似于Web或Pivot控件中的Tab,允許顯示包含多個(gè)選項(xiàng)卡的頁(yè)面。

我們通過(guò)C#代碼創(chuàng)建了一個(gè)TabbedPage

 
 
   
   
    
  

CarouselPage

該頁(yè)面使用滑動(dòng)手勢(shì)在頁(yè)面之間導(dǎo)航。

更多細(xì)節(jié):

  • https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/navigation/carousel-page/

我們通過(guò)C#代碼創(chuàng)建了一個(gè)CarouselPage

public partial class App : Application

{

public App ()

{

InitializeComponent();

MainPage = new MasterProject.Views.MasterPage();

CarouselPage carouselPage = new CarouselPage();

carouselPage.Children.Add(new MainPage());

carouselPage.Children.Add(new Page1());

carouselPage.Children.Add(new Page2());

MainPage = carouselPage;

}

同樣我們也可以使用以下代碼通過(guò)XAML添加一個(gè)CarouselPage: 

 
 
     
         
         
         
     

在我們的示例中,后面的代碼將是這樣的:

1

2

public partial class CarouselPage : CarouselPage {

}

MasterDetailPage

Xamarin.Forms MasterDetailPage是一個(gè)管理兩個(gè)相關(guān)信息頁(yè)面的頁(yè)面 - 一個(gè)顯示項(xiàng)目的主記錄頁(yè)面,以及一個(gè)顯示主記錄頁(yè)面上單個(gè)項(xiàng)目詳細(xì)信息的詳細(xì)信息頁(yè)面。本文介紹如何使用MasterDetailPage和在其信息頁(yè)面之間導(dǎo)航?!备嘣敿?xì)信息,請(qǐng)查看此鏈接。

Xamarin 學(xué)習(xí)筆記 - Page(頁(yè)面)

因此,Master Detail Page容器擁有兩個(gè)頁(yè)面,一個(gè)是主記錄頁(yè)面,另一個(gè)是詳細(xì)信息頁(yè)面。主記錄頁(yè)面將包含菜單列表,詳細(xì)信息頁(yè)面將顯示詳細(xì)信息并將鏈接返回主記錄頁(yè)面,想法很簡(jiǎn)單,如果你有任何按鈕或選項(xiàng)在菜單中顯示它但你想在一開(kāi)始隱藏它們,以保持良好的UI體驗(yàn)。

我們將使用以下XAML代碼對(duì)其進(jìn)行定義:


       
           
               
                   
                   
                   
                   
                   
              
          
       
   

       
           
               
                   
                   
               
           
       
   

標(biāo)簽中,我們將定義主視圖,在我們的例子中,我們有三個(gè)Button按鈕用來(lái)鏈接我們的頁(yè)面。

標(biāo)記中,如果我們沒(méi)有在類(lèi)的構(gòu)造函數(shù)中定義它,我們將包含默認(rèn)內(nèi)容。

這些標(biāo)簽對(duì)于Master-Detail 頁(yè)面是必需的。

我們將創(chuàng)建三個(gè)頁(yè)面:Page1,Page2并且Page3具有不同的內(nèi)容和背景顏色。

現(xiàn)在,在C#部分中,我們將定義默認(rèn)頁(yè)面,以便在啟動(dòng)應(yīng)用程序時(shí)顯示它。

public MasterPage (){ InitializeComponent ();

Detail = new NavigationPage(new Page1());

//Summary:

//Gets or sets a value that indicates whether or not the visual element

//that is represented by the Xamarin.Forms.MasterDetailPage.Master property

//is presented to the user.

//    Remarks:

//Setting this property causes the Xamarin.Forms.MasterDetailPage.IsPresentedChanged

//event to be raised.

//We initialize it to false

IsPresented = false;

}

void goToPage1_Clicked(object sender, System.EventArgs e)

{

//We will display the first page

Detail = new NavigationPage(new Page1());

IsPresented = false;

}

}

屬性IsPresented表示點(diǎn)擊后應(yīng)隱藏或不顯示主-從菜單。

源代碼文件
  • https://github.com/didourebai/MasterProject

  • https://github.com/didourebai/Xamarin-Sample2

總結(jié):

至此,我們的Xamarin基礎(chǔ)學(xué)習(xí)筆記就先告一段落,相信通過(guò)了如上的學(xué)習(xí),大家也能夠?qū)amarin感興趣,能夠使用和嘗試Xamarin。后面大家如果有其他想了解的Xamarin教程也可以PM我們,也歡迎為我們投稿。

Xamarin這個(gè)平臺(tái)總的來(lái)講是一個(gè)快速提高開(kāi)發(fā)效率和降低開(kāi)發(fā)成本的一個(gè)平臺(tái),你可以不必特別了解多個(gè)開(kāi)發(fā)平臺(tái)的語(yǔ)言和環(huán)境特性也能開(kāi)發(fā)出多個(gè)移動(dòng)應(yīng)用,僅憑這一點(diǎn),Xamarin也已經(jīng)在移動(dòng)開(kāi)發(fā)領(lǐng)域擁有了一批擁躉。

而在這其中,葡萄城也是其中的一員,活字格 的用戶(hù)專(zhuān)屬App也是使用Xamarin進(jìn)行開(kāi)發(fā)的,這個(gè)App的主要功能是擴(kuò)展了活字格應(yīng)用在移動(dòng)端的可用性,豐富了用戶(hù)使用的場(chǎng)景,例如:可以在應(yīng)用中使用掃碼命令幫你快速錄入產(chǎn)品信息、使用移動(dòng)設(shè)備定位、手機(jī)系統(tǒng)級(jí)通知等等功能。


網(wǎng)站標(biāo)題:Xamarin學(xué)習(xí)筆記-Page(頁(yè)面)
本文路徑:http://weahome.cn/article/ggpodo.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部