• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+
イイね!
2007年11月28日

【C#】ListViewに自作コントローラーをぶら下げる【.NET3.0】

.NET3.0のコントローラーはUIElementという抽象化クラスで扱えることになっているのでなんでもサブクラス化できる。
ドロップダウンリストにImageがそのままAddできちゃったときはおしっこ漏らしそうなほどびっくりしたものだ。

ちょっとこれ.NET2.0でやったら3日はかかるんですけど(゚Д゚)

ならば
TreeViewにもImageやボタン、はては自作コントローラーもAddできるんでない?



まずは配列を作らなくてはいかん。
ObservableCollectionで自作コントローラーの配列を作ってTreeコントローラーにバインドしてみた。
すると確かに自作コントローラーが並んだ。
しかし階層化されない。
そりゃそうだ。
しかしどうやって・・・。うーむ。

まずは
例によって文献が超少ない中頑張って調べた。どうもHierarchicalDataTemplateというテクニックを使うといいらしい。
ここにサンプルがある(日本語版だとなぜかサンプルプロジェクトのリンクが切れてる)。

サンプルでは
親クラス
コドモクラスの配列(List)
名前


コドモクラス
孫クラスの配列(List)
名前


孫クラス
名前


と用意されていて、大元クラスが親クラスをメンバーとして保持。
コンストラクタで親・子供・孫と、適宜追加している。
なるほど。

で、XAMLでDataTemplateではなく、HierarchicalDataTemplateとしてリソースを作っている。
親・子供・孫それぞれ定義している。
コードを見ると、ItemsResourceのところに、保持する配列のクラスが定義されていることが分かる。
なるほど。

さらにいろいろいじって分かったこと
HierarchicalDataTemplateを定義する方法はXAMLを直に書くしかない。
階層クラスは子供・孫と用意する必要はない。自分をメンバー化すれば再帰的に階層化できる(まぁこれは普通)。


というわけで
親クラス
親クラス
名前
自作コントローラー


という構成でクラスを作って、大元クラスで親クラスを複数用意し、Addしまくって階層構造を作り、TreeViewにバインド。

しかし
名前しか出ん(´・ω・`)

バインド時にDataTemplateであれこれいじってもダメ。

無理なのか・・・?
いやまて、そのDataTemplateのXAMLコードを調べてみよう。
良く見ると並びがオブジェクトウィンドウのWindowの並びに似ている。
そうか、ということは・・・(-_☆)キラーン

結果
<HierarchicalDataTemplate>
<UserControler>
(ここにさっきまでTextBlockというコントローラーがあった)
</HierarchicalDataTemplate>

これだけでよい。
これだけで自作コントローラーを階層表示させることができる。
経験者なら分かるが、これは本来なら非常に面倒で果てしない作業だ。

しかし.NET3.0ならたったの3行(いや、その上にソース引用元とか書かなきゃいけないんだけど)。
しかもロジックコードではなく、XAMLのコードだけだ。

信じられん!
なんて簡単なんだ!!!
(ToT)
ブログ一覧 | プログラム | 日記
Posted at 2007/11/28 22:19:05

イイね!0件



今、あなたにおすすめ

ブログ人気記事

曇り(法務省)
らんさまさん

ブラボーゾロ目
nogizakaさん

お疲れ様でした🙇
ゆう@LEXUSさん

裏表使えるってイイネ
ターボ2018さん

小槌の宿鶴亀大吉
みぃ助の姉さん

だから、私のにはシビエのドデカフォ ...
P.N.「32乗り」さん

この記事へのコメント

コメントはありません。

プロフィール

みんカラ新規会員登録

ユーザー内検索

<< 2025/4 >>

  12345
6789101112
13141516171819
20212223242526
27282930   

リンク・クリップ

有楽町丸井 
カテゴリ:脱キモオタ
2007/09/15 15:55:54
 
Elastic 
カテゴリ:脱キモオタ
2007/02/13 00:55:22
 
スタイルコネクション 
カテゴリ:脱キモオタ
2007/02/13 00:33:58
 

愛車一覧

日産 180SX 日産 180SX
おっさんなのに180sx
ヘルプ利用規約サイトマップ

あなたの愛車、今いくら?

複数社の査定額を比較して愛車の最高額を調べよう!

あなたの愛車、今いくら?
メーカー
モデル
年式
走行距離(km)
© LY Corporation