いわゆる WPF のレイアウトのお話です。
教科書を一冊手元に置いておけば誰でもレイアウトを自由自在に…
まぁ私はそんなにできる方ではないので、一般的な DockPanel と Grid
GridSplitter を使って、なんとなく作りたいとイメージしていたレイアウトを実現しました。
レイアウトを次に示します。
XAML コードは次のとおりです。
配置したボタンをそれぞれのコントロールと交換していきます。
さっそく、メニューと3Dビューのイメージコントロールを置き換えます。
レイアウト変更を確認しました。
では、ツリーコントロールについて少し調べてみましょう。
<調査>
大変素晴らしいページを見つけました。
ほか、ノードにチェックボックスとアイコンイメージを付ける方法も試しました。
XAML コードは次のとおり
ほかにも、色指定でアイコンを表示したりする方法も調査しました。
WPF のブラシの概要
おおむね、やりたいと思っていたことがこれで可能ということがわかりました。
XAML コードは次のとおり
では、実装を進めます。
テストで色々汚してしまいましたが、基底となるツリーノードはラベルと子ノードリストのみを持つようにし
派生したノードに以下のものを用意します。リソースに列挙しそれぞれのバインド先のクラスを作成します。
ノード
メッシュ
プリミティブ
頂点バッファ
インデックスリスト
エフェクトファイル
マテリアル
テクスチャ
イメージ
メッシュジョイント
ライト
カメラ
物理
カスタムアトリビュート
はい、すると次のコードを書くことで
次に示す結果を得ることができます。
コードからツリーの構築ができることを確認しました。
(やったね!)
あとはビューアにて、ファイル読み込み処理を行った時に現在読み込んでいるデータから
ツリーを構築するコードを書きます。
※画像は開発中のイメージです(笑)
※画像は開発中のイメージです。
おや?テクスチャのID名が重複している…なんで?
Viewer 側の不具合でした。
テクスチャ情報インデックスを全然関係ないところから取ってきていました。
これで、読み込んだデータからノードツリーを構築することができました。
続いて検索機能をつけましょう。
まずはテキストボックスとコンボボックスのコントロールを配置します。
<進捗状況>
ComboBox, TextBox をキーワードに調べれば、次に示すようにコントロールを配置することくらいは
誰でもできると思います。
あとは、これの設定情報を元にツリーをフィルタリングする機構を書いてみます。
<実装>
すると、次に示すとおりツリーにフィルタをかけることができました。
ラベルフィルタもこのとおり↓
良い感じですね!
ひとまず現在の XAML と ソースコードを参考に貼り付けておきます。
ソースコード
レイアウトの基本を学びました。
Grid, GridSplitter, DockPanel を使いました。
データバインディングを使って、コンボボックスのアイテムやツリーのノードを切り替えました。
ツリーにフィルタリング機能を付けました。
詳細はソースコードを見ればわかるようになっています。
さて、次回はノードを選択するとプロパティビューが更新され
プロパティを変更すると、実際に3Dビューの描画結果に影響が出る
という所まで作ってみましょう。
2012/08/18 初記。
2012/08/25 更新。