OSTRACISM CO.

ScalaとOCamlとF#とPythonと...

F#でWPF

 .NETの一級市民と「なるべく」設計されたというF#。一級市民になれたのだろうか。Visual Studio 2013 CommunityでもデフォルトでF#が使える。がしかし、GUIプログラム(WPFプログラム)が作れるようにはなっていない。拡張プログラムの「F# Empty Windows App (WPF)」をインストールすることでGUIプログラムが作れるようになる。喜んで使い始めるが、どうもプロパティでGUIコントロールをバインドする部分がちゃんと動かない。ツリー表現のコントロール(パス)でアイテムを選べるのだが、アイテム名が表示されないので何を選んでるのかわからない。選ぶとXAMLファイルが変更されるので動いてはいるようだ。これがバグなのか、たまたま微妙に動いてるだけなのかわからない。デフォルトではF#ではWPFプログラムを作れるようにはなってないのだからたまたま微妙に動いてるだけという可能性は高い。なんにせよ結局XAMLは手で触らないといけない。いやはや一級市民ねぇ。

 プロパティをイベントモードにすると「イベントハンドラーを追加する前に、分離コードファイルとクラス定義を追加してください。」などとお願いされちゃう。分離コードってなんだ? と調べると、C#のpartial classを使ってXAMLの定義とC#の定義を融合するといったことをするようだ。問題はF#にはpartial classなんて概念がないこと。将来的にはサポートされるんだろうが、現在のF#(バージョン3.1.2)には存在しない。困ったぞ。しかたがないので、アプリケーションのインスタンスを表すApp.xamlを使うのを止め、コードでアプリケーションの初期化を記述した。イベントハンドラーはコードで追加。まさしく手で追加。一級市民ダネエ。


2015.01.14


「インデックス」へ戻る


OSTRACISM CO.

OSTRA / Takeshi Yoneki