ものがたり(旧)

atsushieno.hatenablog.com に続く

複数行にわたるTextBlock.TextをVWD2010のデザイナで編集できない問題

mono meetingのためにSilverlightおもちゃを作っているのだけど、いろいろハマりどころがあってとても難航している。誰だこんなことしようと思い立ったやつは…

というわけで、初めてVWD2010でまともにGUIを作ろうとしている。しょっちゅうデザイナがクラッシュするのだけど、VWD本体を巻き込まない点はとてもいいと思う。

もちろんまだいろいろ課題があるなとは思った。特にメモしておこうと思ったのはこの問題:

Visual WebDeveloper 2010 Expressを使って、TextBoxにmultilineなTextを編集しようとしても、1行しか入力を受け付けてもらえない。仕方がないので、ソースエディタを使ってText属性に改行入り文字列を設定する。そうすると何とうまいこと書けてしまう。これは問題だ。XML属性中の改行文字は空白に置換されるのが筋だから、処理系を通したら改行が消えてしまう。現にmoonlightではそのようなXAMLXML属性を正規化して処理する。

文字列値をTextBlock.Text子要素ではなくText属性として保存するのはVWDのバグだろうけど、そもそもTextBoxのTextプロパティは属性を受け付けるべきではない。XamlMemberのAPIで言えば、AllowedContentTypesで属性を除外していないのが良くない。AllowedContentTypesAttributeで明示的に禁止すべきだった。

そしてこの「VWDで属性値として保存してしまう」問題によって作成されるXAMLファイルが多量に出てくると、今後このフレームワークレベルでの問題は修正できなくなるのだろうな。

  • -

ところでmono meetingはまだ参加者募集しておりますんで、ぜひお気軽にどうぞ。(この辺もいろいろいじり出したので、その辺のお話もそれなりにできるかと思います。)