rksoftware

Visual Studio とか C# とかが好きです

F# で Xamarin Forms

恥ずかしい話ですが、先日 F# で Xamarin.Forms ソリューションのテンプレートの存在に気が付きました。
もしかしたら以前にも気が付いたことがあったかもしれませんが、そうであっても完全に忘れていたので書いておきます。
※追記:ちょうど 2 年くらい前にも一度気が付いていたらしいです。。。

■ Visual Studio for Mac を起動する

最初の手順として、Visual Studio for Mac を起動します。for Windows ではだめです。Mac でなければテンプレートが出てきませんでした。

f:id:rksoftware:20191201201809j:plain

プロジェクトの新規作成で、マルチプラットフォーム > アプリ > Xamarin.Forms > 空白のフォームアプリ > F# を選択します。

f:id:rksoftware:20191201201839j:plain

xaml および対になる F# コードでアプリのソースコードが作られます。

■ 実行する

そのまま実行できます。

これだけです。注意点は、for Windows ではだめという点でしょうか。
ちなみに、for Mac でソリューションを作った後はソリューションを Windows で開いても普通にビルド、実行可能です。

■ コードから表示テキストを変えてみる

F# のコードで表示されるテキスト「Welcome to Xamarin.Forms!」を「Welcome F# Xamarin.Forms!」に変えてみます。

<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:fsforms" x:Class="fsforms.MainPage">
    <Label x:Name="welcomelabel" Text="Welcome to Xamarin Forms!" VerticalOptions="Center" HorizontalOptions="Center" />
</ContentPage>
namespace fsforms

open Xamarin.Forms
open Xamarin.Forms.Xaml

type MainPage() =
    inherit ContentPage()
    do
        let _ = base.LoadFromXaml(typeof<MainPage>)
        let ll:Label = base.FindByName "welcomelabel"
        ll.Text <- "Welcome F# Xamarin.Forms!"

計画通り。テキストを変更できました。