F# で ビジュアルデザイナを使ったGUI編集が出来るかも

XAMLのデザイナは動きますが、イベントとかにコードジェネレータに対して働きかける事は出来ませんでした。

 コードジェネレータが動きませんので、Classディレクティブ?が含まれてるXAMLも例外がはかれてダメダメでした。
x:Classなどのコードを削除すれば動きました。

尚、XAMLファイルはリソースとしてプロジェクトに追加すれば良いようです。


XAMLファイルを作る、名前は「クラス名.xaml」を作成する。

<Window
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="タイトル" Height="320" Width="280">
    <Grid>
        
    </Grid>
</Window>


■F#コード、名前は「クラス名.xaml.fs」を作成する。

namespace SampleNamespace

open System
open System.Windows
open System.Windows.Markup

type WpfClassSample() =
//    inherit Window()
    let _uri = new Uri("WpfClassSample.xaml", UriKind.Relative)
    let _base = Application.LoadComponent(_uri) :?> Window
    member w.Base = _base


■実行コード for F#

let app = new Application()
let wpf = new WpfClassSample()

#if COMPILED
let app = new Application()
let wpf = new SampleNamespace.WpfClassSample()
[<STAThread>]
do
    app.Run(wpf) |> ignore
#endif

■おまけの App.xaml と App.xaml.fs

<Application x:Class="SampleNamespace.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="KeyboardMouseViewrWPF.xaml">
    <Application.Resources>
         
    </Application.Resources>
</Application>
namespace KeyInputViewr
open System.Windows

type App() =
    inherit Application()

上記クラスのインスタンスを作成して、Run() を呼び出すことでも可能かも

    • -