misc.log

日常茶飯事とお仕事と

添付プロパティ

というわけで概念面を突き詰めると先に進めない人なので、とりあえずWPFアプリケーションをさわって作って試してみるといういつものアプローチで。環境はVisual Studio 2008 SP1とExpression Blend 2。ツールの基本的な扱いについてはここ数日で色々やっているので、まぁ何も判らないレベルは脱してきている状態。とりあえず、ファイルを指定してイメージデータを表示するという程度の物を作ってみようと思い、着手。フォーム上段にファイルを指定するインターフェイス、中段が画像表示。ここはフォームのリサイズで伸縮。下段には終了ボタンとかステータス表示欄を、という構成。ところが、通常のWindowsアプリで言う「Dock」プロパティが見あたらない。
調べてみると、DockPanelというパネルを下地に敷くことで、その子要素にDockプロパティが追加されるようだ。実際、DockPanelの中にImageコントロールを貼り付けると、Imageコントロールに「DockPanel.Dock」というプロパティが登場した。これを「添付プロパティ」と呼ぶらしい。継承して元のクラスを拡張するのではなく、ちょっと追加、という感じでプロパティを追加してしまうようだ。

これ、親(下地)となるDockPanelの「LastChildFill」プロパティがTrueの場合、

  • 最後に貼り付けられたコントロールは「Fill」扱い。
  • それ以外はDockPanel.Dockプロパティの指定に従う。

というわけで、DockPanelコンテナに1つだけコントロールが貼り付けられている状態では正直意味がないようだ(Fill扱いになる)。ただ、Imageコントロールを1個だけ貼り付けても、一般的なWindowsアプリのデザイン画面のように「コンテナにべったり広がって張り付く」とならないのはなんでだろうか?他にも何か設定があるのだろうか。


Microsoft Expression Blend 2

Microsoft Expression Blend 2

Visual Studio 2008 Professional Edition

Visual Studio 2008 Professional Edition

これと「依存関係プロパティ」ってのの関係は?もちょっと資料とか呼んでみないと判らない。それから横の人から「.NET 2003でもToolTipとかで似たことはやってる」とのこと。確かに。