Xamarin.Forms for UWP Preview を試す
@ticktackmobile 今のところそうですね。一応大っぴらにしていいか聞いてみますが、Feedback ください。って言ってるのでオープンにすればいいのにと思いますがw
— 田淵 義人@エクセルソフト (@ytabuchi) 2015, 10月 19
こんな会話をしていたら、公式フォーラムでXamarin.FormsのUWP(Universal Windows Platform)サポート版プレビューが公開されたので写経してみます。
Xamarin.Forms for UWP Preview Now Available - Xamarin Forums
NuGet周りの準備
※ 2015/11/17にリリースされたXamarin.Forms 2.0以降ではnuget.orgからダウンロードできるようになりました。よってzipファイルのダウンロードやローカルパッケージリソースの参照は不要です。(2015/11/18 修正)
Preview版NuGetパッケージの入手
まずはプレビュー版のNuGetパッケージをダウンロードして、zipファイルの中身をローカルフォルダーに展開しましょう。
zipファイルはフォーラムのここからダウンロードできます。
パッケージマネージャーの設定 (Visual Studio)
ツール > NuGetパッケージマネージャー > パッケージマネージャーの設定 を開きます。
右上の「+」ボタンでパッケージソースを追加します。
追加されたパッケージソースの「ソース」を先ほどzipファイルを展開したフォルダに変更して「更新」ボタンを押します。
これでプレビュー版のNuGetパッケージを使う準備が整いました。
サンプルプロジェクトを作ってみよう!
今回の例ではVisual Studio 2015で作業します。
プロジェクトの作成
まずはXamarin.Formsの新規ソリューションを作成します。
ソリューションに空のUWPプロジェクトを追加します。
構成マネージャーで追加したプロジェクトの「ビルド」と「配置」をONにします。
- UWPプロジェクトにXamarin.FormsのNuGetパッケージを追加します。
この際、「パッケージソース」リストボックスで先ほど追加したローカルフォルダーを指定し、「プレスリリースを含める」をチェックすると候補に出てくるようになります。※ 2015/11/17にリリースされたXamarin.Forms 2.0以降ではnuget.orgからダウンロードできるようになりました。(2015/11/18 修正)
他のプロジェクトのXamarin.Formsを通常の最新に更新します。(今回の例ではShared構成、かつ他のプラットフォームは動かさないので何もしませんが)
UWPプロジェクトにShared/PCLプロジェクトへの参照を追加します。
ソースコードの修正
UWPプロジェクトのソースコードをXamarin.Formsに対応させます。
App.xaml.cs
OnLaunched の次のコードの下に
rootFrame.NavigationFailed += OnNavigationFailed;
このコードを追加します。
Xamarin.Forms.Forms.Init (e);
MainPage.xaml
xmlnsを追加します。
xmlns:forms="using:Xamarin.Forms.Platform.UWP"
※ Xamarin.Forms 2.0から名前空間が変更されました。(2015/11/18 修正)xmlns:forms="using:Xamarin.Forms.Platform.WinRT"
ルートのPage
クラスをforms:WindowsPage
クラスに修正します。
<forms:WindowsPage ...> </forms:WindowsPage>
MainPage.xaml.cs
次のように修正します。YOUR_NAMESPACE.App
は今回の例ではXFUWPSample.App
となります。
(MainPageの継承元を消しておくのがポイント?)
public sealed partial class MainPage { public MainPage() { this.InitializeComponent(); LoadApplication (new YOUR_NAMESPACE.App()); } }
動かしてみる
すべて終わってからで実行してみると...
UWPでXamarin.Formsが動きました。すごい!
補足1
「型 "HogeHoge" は参照されていないアセンブリで定義されています。~」的なエラーが大量に出る人は、ここで配布されている .NET Framework 4.5.2 Developer Pack をインストールしてみてください。
補足2
XamarinのIndieライセンスを契約している場合、「Xamarin.Android/iOS for Visual Studio はIndieじゃあ使えないよ」と言われてビルドさせてもらえませんが、Android、iOSのプロジェクトをアンロードすれば回避できます。(なぜかiOSの方はアンロードしなくてもダイアログを閉じればビルド&実行可能)
最後に
機能的安定とパフォーマンス向上のためバグ報告を待ってます、とのこと。
参考
Xamarin.Forms for UWP Preview Now Available - Xamarin Forums