Blend2.0で見るVisualTreeの罠

スポンサーリンク

SilverLightの画面を作っているときの疑問。

あの日私はコントロールテンプレートを作成していたのです。

画面の貴重色を4色用意するひつようがあり、ベースのコントロール配置に対してスタイルを作成しておりました。

4色の中にはベースとなるもの意外に別々に4色それぞれ適応させないといけないコントロールがあったので、そのコントロールも別々にテンプレートを作成しました。

Blend2.0のスタイルタブの例で言うと、

ベース1

ベース2

コントロールテンプレート1

コントロールテンプレート2

コントロールテンプレート3

コントロールテンプレート4

ベース3

ベース4

という順でXAMLに記述したのですが、ここで問題が発生しました。

ベース1と2のスタイルを画面に対して適応させると、エラーになります。

でもベース3と4は適応させると普通に実行できます。

ちょっと悩んだんですが、まぁ上記の順番をみれば一目瞭然でしょ。コントロールテンプレートの宣言がベース1,2の後に来ているからです。

つまりVisualTreeには親子関係があり、親で使おうとしている子コントロールのテンプレートは親よりも先に定義されレンダリングされる必要があるようです。

まったく持ってめんどくさい設定だ。

コメント