読者です 読者をやめる 読者になる 読者になる

亀岡的プログラマ日記

京都のベッドタウン、亀岡よりだらだらとお送りいたします。

追加したコレクションプロパティをコレクションエディタから編集できるようにしたい

WPF

属性でハマった。

やりたかったのは、要はこれ↓
f:id:posaunehm:20100702232216p:image
を出したかったんです。

結論からいうと、これでいいです。→

NewItemTypesAttribute Class (Microsoft.Windows.Design.PropertyEditing)

        [NewItemTypesAttribute(typeof(int))]
        public List<int> Hoge { get; set; }

MSDNにもあるように、コンストラクタは可変長引数になってますので、いくつでもデフォルト値は追加できます。

ただし、これで書いた時の問題がひとつ。
VisualStudio2010でのコレクションエディタでは表示されない!

これに2時間くらい悩んでました。試しにBlendで見たら出てるし!!
(とりあえずの目的はBlendで出すことでした)

ちなみに、WPF的には、デザインメタデータとしてこういう属性は分離して、XXX.Design.dllを作成してやるのが本道っぽい。
解説はこちら→ 4 Great Tips for Custom WPF Controls Developers | Dev102.com

dllを分離することの最大のメリットは、こういうマニアックなクラスはClientProfileに入っていないというのがある。プログラマの作業効率だけのためのものがユーザー配布のdllに入っちゃうのもどうかと思いますしね。

サクっとできるはずがこの有様だよ!!