XAML in Xamarin.Forms 基礎篇 電子書

XAML in Xamarin.Forms 基礎篇 電子書
XAML in Xamarin.Forms 基礎篇 電子書

Xamarin.Forms 快速入門 電子書

Xamarin.Forms 快速入門 電子書
Xamarin.Forms 快速入門 電子書

2017/05/01

Xamarin.Forms 使用 Prism 框架開發,如何修改 View 的名稱

之前上課的時候,有學員提問,若想要修改 View 的名稱,是不是只要修改 ViewName.xaml 這個檔案名稱就好了;不過,答案可不是如此。
在這個練習中,我們使用 Prism Template Pack 專案樣板,建立一個 Xamarin.Forms 的專案。在這個專案內,預設會幫我們產生一個 MainPage.xaml / MainPageViewModel 兩個檔案,分別是 View / ViewModel;若我們想要把這個頁面,修改成為 HomePage 的話,有哪些地方需要注意的,以及該如何做呢?

將 View 的名稱改名

首先,可以在 Visual Studio 的 核心PCL 專案內的 Views 資料夾內,找到 MainPage.xaml 檔案,滑鼠右擊這個項目,選擇 重新命名,接著輸入 HomePage
接著,打開這個 HomePage.xaml 檔案,找到 ContentPage 這個根節點。
<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="PrismUnityApp2.Views.MainPage"
             Title="MainPage">
將 x:Class="PrismUnityApp2.Views.MainPage" 修改成為 x:Class="PrismUnityApp2.Views.HomePage",並且按下 Ctrl+S 將此次修改的內容存檔,而 ContentPage 的定義將會成為
<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="PrismUnityApp2.Views.HomePage"
             Title="MainPage">
在 核心PCL專案內的 Views 資料夾內,打開 HomePage.xaml.cs 檔案。
將 MainPage 類別,修正成為 HomePage,如下所示:
按下 Ctrl + S 將此次修改的內容存檔。
除了類別名稱之外,建構式名稱也需要一併修正。
    public partial class HomePage : ContentPage
    {
        public HomePage()
        {
            InitializeComponent();
        }
    }

修正 App.xaml.cs 的導航頁面與注入定義

在 核心PCL 專案內,找到並打開 App.xaml.cs 檔案,在 OnInitialized 方法內,呼叫 NavigationService.NavigateAsync 內的字串引數,把 MainPage 內容改成 HomePage
在 RegisterTypes 方法內,將 Container.RegisterTypeForNavigation<MainPage>(); 修改成為 Container.RegisterTypeForNavigation<HomePage>();
最後按下 Ctrl + S 存檔
    public partial class App : PrismApplication
    {
        public App(IPlatformInitializer initializer = null) : base(initializer) { }

        protected override void OnInitialized()
        {
            InitializeComponent();

            NavigationService.NavigateAsync("NavigationPage/HomePage?title=Hello%20from%20Xamarin.Forms");
        }

        protected override void RegisterTypes()
        {
            Container.RegisterTypeForNavigation<NavigationPage>();
            Container.RegisterTypeForNavigation<HomePage>();
        }
    }

將 ViewModel 的名稱改名

首先,可以在 Visual Studio 的 核心PCL 專案內的 ViewModels 資料夾內,找到 MainPageViewModel 檔案,滑鼠右擊這個項目,選擇 重新命名,接著輸入 HomePageViewModel
此時,Visual Studio 會提示您:
您在正重新命名檔案,您是否也要更新命名此專案中對於程式碼項目 'MainPageViewModel' 的所有參考?
請在這個對話窗中,點選 是(Y)

建置與執行

最後,請將 Android 專案設定為預設起始專案,並且執行這個專案。
若您的操作步驟都是正確的話,這個 App 是可以正常執行的。

沒有留言:

張貼留言