Xamarin。Forms でクラシックデスクトップアプリ(WPF)が作れるらしいので試してみました。
■ 参考
何番煎じかわからない状況ですが、Xamarin.Forms の v3.0.0.296286-pre2 が NuGet に乗って多少手順も楽になったので書き残しておきます。
■ プロジェクトの作成
Cross-Platform > Mobile App (Xamarin.Forms)
を選択し、新規作成します。
ここで、少し気になる点として、(Xamarin.Forms)
という記載がありますが、先に進めます。
テンプレートの作成では、Code Sharing Strategy
で日本で良く選ばれている .NET Standard
を選択。
ここで皆さんお気づきでしょうか?
かつてあった UI Technology
の Xamarin.Forms
or Native
の選択がなくなっていることに。
Native のソリューション作るのが少し手間になりそうですね。
■ クラシックデスクトップアプリ プロジェクトの追加
ソリューションに WPF アプリのプロジェクトを追加します。
プロジェクトテンプレートで クラシックデスクトップアプリ > WPF App
を選択してください。
.NET Framework は 4.6.1 で大丈夫です。
■ クラシックデスクトップアプリ へ プロジェクト参照の追加
WPF アプリのプロジェクトから、.NET Stardard プロジェクトを参照するよう、参照の追加をしてください。
■ NuGet の更新/追加
ソリューションの NuGet パッケージの管理で、ソリューションのすべてのプロジェクトに、pre の Xamarin.Forms を更新/追加してください。
NuGet の画面で、「プレリリースを含める」チェックを ON にするのがポイントです。
■ クラシックデスクトップアプリ へ NuGet の追加
WPF アプリのプロジェクトに Xamarin.Forms.Platform.WPF
パッケージを追加します。
■ クラシックデスクトップアプリ の 変更
WPF アプリの MainWindow
クラスを変更します。
- コードビハインド (
MainWindow.xaml.cs
) で基底クラスをXamarin.Forms.Platform.WPF.FormsApplicationPage
に変更します。 - コンストラクタに
Xamarin.Forms.Forms.Init();
とLoadApplication(new {ソリューション名}.App());
を追加します。 - 合わせて xaml (
MainWindow.xaml.cs
)xmlns:xam="clr-namespace:Xamarin.Forms.Platform.WPF;assembly=Xamarin.Forms.Platform.WPF"
を追加します。 - さらに xaml のトップレベルの要素を
xam:FormsApplicationPage
に変更します。
結果二つのファイルは次のようになります。
※ここでは、XWpfV3
というソリューション名にしています。
namespace XWpfV3.Wpf { public partial class MainWindow : Xamarin.Forms.Platform.WPF.FormsApplicationPage { public MainWindow() { InitializeComponent(); Xamarin.Forms.Forms.Init(); LoadApplication(new XWpfV3.App()); } } }
<xam:FormsApplicationPage x:Class="XWpfV3.Wpf.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:XWpfV3.Wpf" xmlns:xam="clr-namespace:Xamarin.Forms.Platform.WPF;assembly=Xamarin.Forms.Platform.WPF" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800"> <Grid> </Grid> </xam:FormsApplicationPage>
■ 実行
実行すると、あっさり Welcome to Xamarin.Forms!
です。
簡単ですね。
次回以降、共有コード内の画面定義 MainPage.xaml
を編集していってみようと思います。