XAML in Xamarin.Forms 基礎篇 電子書

特別說明

2017/01/29

Xamarin FAQ 1-28 : 不同系統平台下,導航頁面的返回按鈕文字問題2

問題

延續 Xamarin FAQ 1-28 問題,發現到在某些情況下,應用程式在 iOS 平台下執行的時候,會造成導航頁面的頁面說明文字無法置中對齊,而被擠向右方,這是甚麼情況?

解答

會發現這個問題是之前都是使用 iPhone 6 Plus iOS 9.3 Simulator 來進行測試,偶而發現到,當使用了 iPhone 6s iOS 9.3 這個 Simulator 來測試的時候,發現到這樣的問題。
下面四張圖片,分別為從首頁導航到第二頁的頁面截圖,從前面三個畫面截圖可以很清楚的看出,這個頁面的標題文字 這是第二頁 明顯的被往右推過去了,這將會造成使用者覺得這樣的設計十分奇怪;不過,我猜想這應該是 iOS 本身的一個問題,而不是 Xamarin.Forms 這裡的問題。最後一張圖則是我們想要的樣貌,這個頁面的標題是置中的,而且,上一頁的頁面標題則是適當的被截掉。
因此,我個人認為比較好的解決方案,還是要自行定義出回上一頁按鈕名稱,而不需要使用上一頁面的名稱來做為回上一頁按鈕的名稱。
這裡提供另外一個不需要使用 Call behind 的方法,那就是可以在 XAML 頁面中來定義這個回上一頁按鈕的名稱,不過,特別重要的是:回上一頁按鈕名稱,必須定義在上一頁的XAML中
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
             prism:ViewModelLocator.AutowireViewModel="True"
             x:Class="XFNavigationTitle.Views.MainPage"
             NavigationPage.BackButtonTitle="回去了"
             Title="{Binding PageTitle}">

    <StackLayout HorizontalOptions="Fill" VerticalOptions="Start"
                 Margin="20,20,20,20"
                 >
        <Label Text="{Binding Title}"
               Margin="0,0,0,30"/>

        <Label Text="這個頁面名稱" />
        <Entry Text="{Binding PageTitle}" />
        <Button Text="測試回上一頁文字" Command="{Binding 測試回上一頁文字Command}" />
    </StackLayout>
</ContentPage>

沒有留言:

張貼留言