体調が微妙に悪いんだが、かといってそんなにはっきり悪いわけでもないんですぐ治るかと思ったけどまだ微妙に悪い。
まあいつも1時くらいまで配信してから寝てるのが悪いだけなんだけどさ。でもプログラム書きたいじゃん。
金曜日にかえってぶっ倒れてたら一応良くなった気がする。暑くて寝苦しかったけど。
そんなわけでIronRubyいじりの続き。
WPFにDataGridという非常に強力かつ非常に強力すぎて難しいクラスがあるんだが、これがSilverlightにもあるので使いたい。
ドキュメント読んでたら、標準では入ってないのでSilverlight SDKいれてね的な事が書いてある。んで、入れようとおもったらexeファイルですよ。zipでくれ。
うーん、中のアセンブリだけもらえれば十分なのに。
オープンソースであるSilverlight Toolkitの一部でもあるらしいのでそれを落としに行ったら今度はmsi。とことんMacでは使わせない気かよ。
仕方ないのでWindowsマシンにSDK入れてアセンブリだけコピってきた。
アセンブリ読み込むのはrbファイルと同じ場所にdllを置いて、
require 'System.Windows.Controls.Data'
でいけた。しかしSystem::Windows::Controls::Data名前空間はないのにはめられたんだが。System::Windows::Controlsでいい。なんでだよ。
あとはサンプルをC#版から移植したんだけど、データソースはどうしよう。
C#だとFirstNameとかLastNameとかAddressプロパティをもったCustomerオブジェクトのListを作ってそれをデータソースにしている。
めんどいのでHashとArrayじゃ駄目ですか?
grid.items_source = [ { 'FirstName' => 'aaa', 'LastName' => 'bbb', 'Address' => 'ccc', 'IsNew' => true, }, ]
こんな感じ。
思った通り駄目だった。
このあとちゃんとRubyでCustomerクラス作ってattr_accessorでプロパティ扱いしてくれるかなと思ったのでやったんだがこれも駄目。
やっぱりちゃんとC#でいうプロパティじゃないと駄目らしい。IronRubyではプロパティってどうやって作れるのか調べるが見つからない。
ソースを見たけど0.6.0時点では無いっぽい。
どうもIronRubyからは動的に型情報を生成してやる必要がある模様。自前で。めんどいなぁ。いやめんどいとは言え出来るってのが.NETのすごい所だが。しかもSilverlightというサブセットでも出来るってのがまた。
だとしてもやっぱりCLRってC# VMだよね。以前JScript.NETで遊んだときも思ったけど動的言語と相性悪い。いやむしろC#以外はおまけ。
とにかく型情報を自分で作るところをやってみるか。
と、思ったけど自分でちゃんとColumn作って設定してった方がまともだし早いだろうなぁ。そうするかー。