こんにちは。エクセルソフトの田淵です。
2016/1/22 追記:
最新の Xamarin.Forms 2.0.1.6495 用のプロジェクトテンプレートを作成しました。Xamarin.Forms の PCL、Android、iOS、UWP、Windows Store 8.1、Windows Phone 8.1 (WinRT) の 6つのプロジェクトが含まれていて、プロジェクトを作成してビルドするだけで、UWP, Windows Store, Windows Phone 8.1 アプリが作れます。ぜひ試してみてください。
2015/10/16 に Xamarin.Forms for Universal Windows Platform (UWP) がクローズドベータでリリースされました。
2015/10/25 に Xamarin.Forms for UWP Preview Now Available - Xamarin Forums で Xamarin 公式フォーラムで公開が開始されましたので、是非 Xamarin をお持ちの皆様は試してみてください。
今回 ダウンロードしたバージョンは Xamarin.Forms.1.5.1.6466-pre2 です。
ダウンロードと事前準備
早速ダウンロードして Readme を読んでみます。
.nupkg を提供するから Local NuGet 立てて読み込んでね。なるほど。Local NuGet は NuGetでローカルのギャラリーを作って自作ライブラリを管理する - きよくらの備忘録 を参考にして立てましょう。そこに Xamarin.Forms.1.5.1.6466-pre2.nupkg
と Xamarin.Forms.Maps.1.5.1.6466-pre2.nupkg
を配置します。
プロジェクト作成と設定
空白のアプリ (ユニバーサル Windows)
を作成します。
こんな感じでプロジェクトが追加されます。
ビルド > 構成マネージャー
で忘れずにビルド、配置にチェックを入れます。
ソリューションから NuGet パッケージマネージャーを開き、パッケージソース
から設定した Local NuGet を選択し、プレリリースを含める
にチェックを入れて、すべてのプロジェクトに Xamarin.Forms.1.5.1.6466-pre2 をインストールします。
コードの修正
ここからは作成した UWP プロジェクトを修正していきます。基本的な流れは Xamarin.Forms for Windows を使ってみた - Xamarin 日本語情報 と変わりません。
ところどころに出て来る UWPSample.UWP
はプロジェクト名ですので、適宜置き換えてください。
App.xaml.cs
の 60行目位の rootFrame.NavigationFailed += OnNavigationFailed;
の後に Xamarin.Forms.Forms.Init(e);
を追加します。
次のようになります。
rootFrame.NavigationFailed += OnNavigationFailed; // これをここに追加 Xamarin.Forms.Forms.Init(e); if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) { //TODO: 以前中断したアプリケーションから状態を読み込みます }
MainPage.xaml
の Content を削除して、xmlns:forms="using:Xamarin.Forms.Platform.UWP"
を追加し、root Element の page を forms:WindowsPage
に変更
2015/12/21 追記:
Xamarin.Forms 2.0 リリース時に UWP に変わりました(恐らく)
次のようになります。
<forms:WindowsPage x:Class="UWPSample.UWP.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:forms="using:Xamarin.Forms.Platform.UWP" xmlns:local="using:UWPSample.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
の MainPage クラスの継承 :page
を削除し、LoadApplication(new UWPSample.App());
を追加します。PCL プロジェクト名.App() とするか、using しましょう。
次のようになります。
public sealed partial class MainPage { public MainPage() { this.InitializeComponent(); LoadApplication(new UWPSample.App()); } }
完成
動かしてみましょう。
Windows 10 マシンは開発者モードにしておく必要がありますね。
単純な NavigationPage なら問題なく動きますね。
私の作った IT勉強会検索のアプリもやってみました。
落ちました!ww ただ、これは ObservableCollection.Clear() で発生しているので、Xamarin.Forms とはおそらく無関係だと思います。
ぜひ皆さんの Xamarin アプリを UWP 対応させてみてください!
Xamarin 気になった方は
これで、iOS/Android アプリを既に Xamarin で作っている皆さまは、MS さんの意欲的な Windows Bridge for iOS や Windows Bridge for Android は使わなくても UWP アプリをリリースできますね!笑
是非 ダウンロード(直接) / ダウンロード(弊社経由) して触ってみてください。 学習用リソース や JXUG リンクページ に参考資料を纏めてますので併せてどうぞ。
Xamarin の情報が欲しい方はこのブログも購読いただいたりすると嬉しいです。
以上です。