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());
}
}
}
<xamFormsApplicationPage xClass="XWpfV3.Wpf.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlnsx="http://schemas.microsoft.com/winfx/2006/xaml"
xmlnsd="http://schemas.microsoft.com/expression/blend/2008"
xmlnsmc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlnslocal="clr-namespace:XWpfV3.Wpf"
xmlnsxam="clr-namespace:Xamarin.Forms.Platform.WPF;assembly=Xamarin.Forms.Platform.WPF"
mcIgnorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
</Grid>
</xamFormsApplicationPage>
■ 実行
実行すると、あっさり Welcome to Xamarin.Forms!
です。
簡単ですね。
次回以降、共有コード内の画面定義 MainPage.xaml
を編集していってみようと思います。