近期因為工作關系開始使用Xamarin,翻譯了兩篇國外的介紹3.0新特性的文章,供大家參考。
第一篇文章來自Xamarin官網,原文地址:https://blog.xamarin.com/xamarin-forms-3-0-released/
第二篇文章來自一位MVP:Charlin Agramonte,原文地址:https://xamgirl.com/exploring-new-properties-in-xamarin-forms-3-0/
試試Xamarin.Forms 3.0的最新版本!
我們很高興為您帶來我們最新的Xamarin.Forms 3.0版穩定版本。 這是我們迄今為止發布速度最快,功能最豐富的版本,還包括對Xamarin技術棧的極大改進,例如Visual Studio 2017中最新的XAML IntelliSense體驗。
當您升級到3.0時,您會發現新的布局和樣式功能,這將改善您構建UI的方式,包括Visual State Manager,Flex布局,樣式表和從右至左的支持等等。 除了這些細節的優化外,XAML編譯還特別關注構建時間的優化,在某些基准測試中將縮短多達88%。
Xamarin.Forms 3.0
Xamarin.Forms 3.0的發布也包含了重要的社區貢獻。 這篇文章包含了每個功能的簡要介紹以及一系列有用的資源,可以幫助您快速完成工作。
Visual State Manager
Visual State Manager在其他XAML平台上是眾所周知的,我們很高興將其引入到 Xamarin.Forms 3.0中。 您現在可以在XAML或C#中使用聲明為布局和控件定義各種狀態,並輕松更新您的UI。 這是一個處理縱向和橫向切換的相機視圖:
要根據方向更改更改捕獲按鈕,關閉按鈕和最后一個圖像按鈕的位置,請使用Visual State Manager。 首先,在您的頁面資源中定義您的狀態:
<ContentPage.Resources> <Style TargetType="FlexLayout"> <Setter Property="VisualStateManager.VisualStateGroups"> <VisualStateGroupList x:Name="CommonStates"> <VisualStateGroup> <VisualState x:Name="Portrait"> <VisualState.Setters> <Setter Property="Direction" Value="Column"/> <Setter Property="Margin"> <OnPlatform x:TypeArguments="Thickness" Default="0"> <On Platform="iOS" Value="0,30"/> </OnPlatform> </Setter> </VisualState.Setters> </VisualState> <VisualState x:Name="Horizontal"> <VisualState.Setters> <Setter Property="Direction" Value="Row"/> <Setter Property="Margin"> <OnPlatform x:TypeArguments="Thickness" Default="0"> <On Platform="iOS" Value="30,0"/> </OnPlatform> </Setter> </VisualState.Setters> </VisualState> </VisualStateGroup> </VisualStateGroupList> </Setter> </Style> <Style TargetType="Image"> <Setter Property="VisualStateManager.VisualStateGroups"> <VisualStateGroupList x:Name="CommonStates"> <VisualStateGroup> <VisualState x:Name="Portrait"> <VisualState.Setters> <Setter Property="AbsoluteLayout.LayoutBounds" Value="30, 0.5, 40, 40"/> <Setter Property="AbsoluteLayout.LayoutFlags" Value="YProportional"/> </VisualState.Setters> </VisualState> <VisualState x:Name="Horizontal"> <VisualState.Setters> <Setter Property="AbsoluteLayout.LayoutBounds" Value="0.5, 0.9, 40, 40"/> <Setter Property="AbsoluteLayout.LayoutFlags" Value="PositionProportional"/> </VisualState.Setters> </VisualState> </VisualStateGroup> </VisualStateGroupList> </Setter> </Style> </ContentPage.Resources>
這里有兩個組; 一個用於需要更新的每個控件,為簡單起見,它們共享相同的狀態名稱。 要更改頁面的C#文件中的狀態,請使用以下命令進行調用:
VisualStateManager.GoToState(Container, (width > height) ? "Horizontal" : "Portrait"); VisualStateManager.GoToState(LastImage, (width > height) ? "Horizontal" : "Portrait");
為了確定方向和目標狀態,可能需要進行一些計算。
有關如何充分利用Xamarin.Forms中的Visual State Manager的更多信息,請參考以下內容:
FlexLayout
FlexLayout是一個新布局,由Web開發中的Flexbox啟發而來。 就像瀏覽器可以是任何大小一樣,Xamarin.Forms應用程序可以運行的各種屏幕尺寸已經增加了很多。 FlexLayout可以促進實現扁平化,高性能和靈活的用戶界面。 FlexLayout非常適合處理布局中的內容分配和間距。 它還使您能夠控制布局的方向,對齊方式以及其他屬性之間的對齊方式。
現在就開始使用FlexLayout,探索這些全新的資源:
StyleSheets
層疊樣式表(CSS)是FlexLayout的一個自然搭配,具有共同的傳統。 使用CSS設計布局風格是與XAML一起實現樣式的最佳方式。 我們知道很多人都喜歡使用Web技術的CSS,並且我們也承認XAML開發人員喜歡在XAML中實現自己的樣式。 我們非常高興能夠為您提供這兩種高效的選項! 使用讓你工作效率最高的東西。
樣式表可以作為單獨的CSS文件添加到您的項目中,也可以內嵌到您的資源中。 可以使用各種常用選擇器組合您的樣式。
有關使用CSS對FlexLayouts和其他應用程序進行樣式設置的更多信息:
- Browse our User Interface Documentation
- Sign up for the Xamarin University Lightning Lecture – Xamarin.Forms 3.0 CSS
Right-To-Left Localization
當支持從右向左流動的阿拉伯語和希伯來語等語言時,您現在可以在任何VisualElement中輕松使用FlowDirection屬性,而無需像以前使用過的那樣使用特定於平台的選項或效果。 因為您已經通過訪問Device.FlowDirection知道了設備的方向,所以更新您的UI可以很簡單,只需將它添加到XAML頁面的頭部即可:
FlowDirection="{x:Static Device.FlowDirection}"
有關更新應用程序以支持從右至左布局的更多信息,請參考以下內容:
- Right-To-Left Localization in Xamarin.Forms Blog
- Localization Documentation
- Xamarin University Lightning Lecture – Xamarin.Forms 3.0 Right-to-Left
Community Contributions
Xamarin.Forms 3.0還以我們的專業社區提供的一些重要貢獻而自豪,其中包括“F100”合作來補充一些內容,並且會繼續在Xamarin.Forms中得到支持。 這個代號代表了改善Xamarin.Forms中100個小缺陷的挑戰。 請繼續向 GitHub project board做出貢獻!
也許最出色的貢獻是還處在預覽版的Xamarin.Forms與WPF合作的功能。 這使您可以通過Native Forms將Xamarin.Forms UI帶入現有的WPF應用程序,並為舊版Windows構建您的Xamarin.Forms應用程序。 有關此新技術 的其他信息:
Update Today and Start Exploring!
Xamarin.Forms 3.0現已在NuGet上提供。 請務必閱讀包含大量錯誤修復的完整版本說明。
請fork Conference Camera prototype 應用程序,它演示了所有這些驚人的功能,並包括一些很棒的特性,來自Azure認知服務的自定義視覺集成!
喜歡這篇文章? 在Xamarin論壇上討論它!
探索Xamarin Forms 3.0中的新特性
隨着Xamarin Forms 3.0的發布,每個人都在談論這些新功能:Flex Layout,css,Visual State Manager和Right to Left。 在這篇文章中,我們不會討論它們,因為有很多文章已經討論過了。(如上面這個)。
我們要討論的是一些新的特性,在這個版本發布之前,如果要實現這些特性的話,需要使用自定義渲染器或Behavior。
1-Max Length
在開發時,您需要限制Entry的文本長度,在達到限制時不允許用戶繼續寫入。 為了解決這個問題,你可能使用了一個Behavior。
現在,您可以在Entry中使用MaxLength屬性。 只需添加該屬性並設置最大數量即可。
結果是:

2-Progress bar Color
使用進度條時,我們無法更改進度欄顏色,因此我們只能使用默認顏色,因此為了設置進度條的顏色,要使用原生APIs,使用自定義渲染器或效果。
現在我們可以使用ProgressColor屬性:
結果是:

3-Picker Font Family
現在你可以給Picker設置一個字體(再也不需要使用自定義渲染器了)。
結果是:

4-ListView full width separators (iOS)

默認情況下,iOS列表在左側有一個邊距,如果設計需要我們刪除這個邊距,可能更簡單的方法是隱藏行分隔符並使用BoxView添加一個新行。
使用最新版本,並得益於平台特性,現在真的很容易。
只需添加iOS引用:
xmlns:ios=“clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core“
然后將該屬性添加到您的列表中ios:ListView.SeparatorStyle =“FullWidth”
結果是:

5-Ime Options (Android)
此功能用於在Entry控件具有焦點時自定義Android鍵盤上的返回鍵。
默認的是這樣的:

如果我們想改變它,可以通過使用屬性ImeOption的平台特性,來做類似之前iOS上的操作。
只需添加Android引用:
xmlns:android=“clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core“
然后將屬性添加到您的Entry控件,android:Entry.ImeOptions =“Search”
結果是:

以下是如何在后面的代碼中執行以及可以使用的其他ImeFlags:

此功能將擴展到支持v3.1.0中的iOS和UWP,這里有更多信息。
我剛剛提到了我最喜歡的幾個功能,但還有更多有用的特性。 如需更多信息,請點擊此處查看發布說明。
享受編碼吧!🙂
