Prism Template Pack UWP 專案範本

昨天我們使用 Prism Template Pack 專案範本,建立了一個共用的可攜式專案,以及可分別執行於:Android、iOS、Windows 三種作業系統平台的專案,也試著可以部署到 Android 模擬器上執行,但是當想部署到 Windows 模擬器上執行時,卻發生錯誤無法執行,今天我們就來想辦法解決吧!

移除專案

將無法使用的 UWP 專案移除:

將移除的 UWP 專案的資料夾和資料夾內的檔案全部刪除,因為等一下新增加的 UWP 專案要放在這裡:

新增 UWP 專案

以 Windows 通用專案範本新增一個 UWP 專案,雖然名稱和位置可以自行決定,但是為了保持命名的一致性,所以取與剛剛刪除的專案相同的名稱,並放置於相同的位置:

為 UWP 專案安裝對應的 Nuget 套件

開啟管理方案的 NuGet 套件視窗:

依下圖所示,重複數次將遺失的 NuGet 套件安裝到 UWP 專案,需要安裝的套件有:

  • CommonServiceLocator
  • Prism.Core
  • Prism.Forms
  • Prism.Unity.Forms
  • Unity
  • Xamarin.Forms

為 UWP 加入可攜式專案參考

將可攜式專案加入到 UWP 專案參考:

在 UWP 專案追加與 Xamarin.Forms 關聯的程式碼

在 App.xamal.cs 檔案中如下圖所示位置加入程式碼:

Xamarin.Forms.Forms.Init(e);

接著在 MainPage.xaml 加入命名空間設定:xmlns:forms="using:Xamarin.Forms.Platform.UWP" ,並將原有的  <page></page>  改成 <forms:WindowsPage> </forms:WindowsPage> 。修改後程式代碼如下所示:

<forms:WindowsPage
    x:Class="MyFirstXamarinForm.UWP.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:forms="using:Xamarin.Forms.Platform.UWP"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:MyFirstXamarinForm.UWP"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    </Grid>
</forms:WindowsPage>

接著在 MainPage.xaml.cs 加入命名空間引用:

using Microsoft.Practices.Unity;
using Prism.Unity;

請留意,務必要將原先的 MainPage : Page 移除 :Page 並將檔案修改成如下所示:

    public sealed partial class MainPage 
    {
        public MainPage()
        {
            this.InitializeComponent();
            LoadApplication(new MyFirstXamarinForm.App(new UwpInitializer()));
        }
    }
    public class UwpInitializer : IPlatformInitializer
    {
        public void RegisterTypes(IUnityContainer container)
        {

        }
    }

使用 Windows 模擬器測試

終於將 UWP 專案重新再建立,接著就來測試,這樣的修改是否有效。在測試之前,先更改一下內定的方案組態設定,這樣可以在測試時少按幾次鍵(少按建置和部署)。

選定 UWP 專案為要測試的專案:

選定要用來測試的模擬器的型號:

按下執行,如果沒有意外的話,修正後的 UWP 專案應該可以正常執行:

好吧!今天就到這裡,明天再來試試如何在 iOS 模擬器上執行,也希望 Prism Template Pack 的作者趕快修好這個錯誤,才不會每次開新專案時都要麻煩一次。