2019年10月12日土曜日

WPF勉強_2

コントロールはコンテンツをホストする
コンテンツが表示される内容
コントロールもまた別のコントロールのコンテンツになりうる(復習)

WPFでは最終的に表示されるオブジェクトはUIElementをルートに持つ。

依存関係プロパティ
≒動的なプロパティ
子から親に情報を伝えたい際、親に合わせて子にプロパティを追加するのは冗長になるからこれを使う
UIElementクラスがDependencyObjectを継承している為ほとんどで利用できる
親が依存関係プロパティを公開し、子がそこに値を出し入れする
親はRegister()を呼び出してpublicでstaticなメンバとしてDependencyPropertyを登録
子はGet/SetValueで第一引数に上記メンバーのオブジェクトを設定
Registerの第一引数が衝突しても第3引数のオーナークラス毎に管理されるため例外は起きない。
依存プロパティはプロパティでラップして使う

アタッチプロパティ
例えば、あなたが作成するクラスで、任意の数の UIElement オブジェクトを管理しなければならないとします。このとき、オブジェクトに対して、オブジェクトをどのように扱うかなどの付加情報を追加させたい場合にアタッチプロパティを利用します。
これもDependencyPropertyクラスのメソッドRegisterAttachedを利用する

パネル
 ContenControlは任意のUIElementをホストできるが1個だけ
 パネルで複数のコンテンツを管理する
 Panelクラスはこれらのルート
 UIElementCollectionのChildrenプロパティで管理しているオブジェクトの列挙などの調査や、Addメソッドで新たに管理したいオブジェクトを渡す
 Canvasはシンプルなパネル
 コンテンツの座標を指定する際はアタッチプロパティで座標をアタッチする。

0 件のコメント:

コメントを投稿