Xamarin.Forms 3.0的新特性


近期因為工作關系開始使用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和其他應用程序進行樣式設置的更多信息:

Right-To-Left Localization

當支持從右向左流動的阿拉伯語和希伯來語等語言時,您現在可以在任何VisualElement中輕松使用FlowDirection屬性,而無需像以前使用過的那樣使用特定於平台的選項或效果。 因為您已經通過訪問Device.FlowDirection知道了設備的方向,所以更新您的UI可以很簡單,只需將它添加到XAML頁面的頭部即可:

FlowDirection="{x:Static Device.FlowDirection}"

有關更新應用程序以支持從右至左布局的更多信息,請參考以下內容:

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,這里有更多信息。

我剛剛提到了我最喜歡的幾個功能,但還有更多有用的特性。 如需更多信息,請點擊此處查看發布說明。

享受編碼吧!🙂

 


免責聲明!

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



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