Nemerle で WPF 開発してみた
.NET 言語ときたらとりあえず WPF できるかを試す azyobuzin です。昨日 @lambdalice 氏に Nemerle なる言語を布教され、とりあえず WPF をいじってみました(おい
言語としては面白いのですが、まだ開発環境がだるいです。
そもそも
Windows Forms しか開発環境はなくて、 Nemerle で WPF をいじるには Application クラスの作成からなにから自分でやらなきゃいけないし、 XAML はあとから読み込む形なのでイベント駆動にはできません。
Livet を使う
WPF と言ったら Livet がないとやっていけないので Livet を使っていきます。 Nemerle にはマクロ機能があるので、 C# はコードスニペット使ってなんとか書いてたプロパティやコマンドの定義を簡単に書けるようにできたりします。で、それをやった結果がこれ
GitHub - azyobuzin/Livet.Nemerle: Nemerle Macros for WPF using Livet, a MVVM Library, and WPF Application Samples
[ViewModelCommand] Hoge() : void { } /* CanHoge() : bool { false; } */
で HogeCommand が生成されたり、
[NotifyProperty(["HogeCommand"])] public Homu : string { get; set; }
で、変更時に RaisePropertyChanged を叩いて、さらに HogeCommand.RaiseCanExecuteChanged まで叩いてくれる Homu プロパティができます。いやー楽しい。
というわけで
Livet とマクロでそこそこ快適な WPF ができるんじゃないでしょうか。どうでしょうね。
あと、 XAML パース部分で読み込まれてないライブラリ(Blend SDK とか)があるとパース失敗するので、最初に読み込ませておく必要があります。その辺を網羅した ApplicationEntryPoint マクロをつくったのですが、ディレクトリ構造がふつうじゃないと死ぬのでオレオレです。
ところで
マクロでエラー起こしても VS のエラー一覧に出てこないので MSBuild 叩いてログ見なきゃいけないとかつらい。