XAML記述とVisualの変換
方法 |
〇 |
〇 |
1 |
ビハインドコードがXAMLを読み込む普通の方法。
リソースだけを読むことはできない。
引数がUri型なので他のストリームからも入力できる可能性がある。 |
〇 |
〇 |
1 |
カスタムコントロールに generic.xaml の記述内容を反映する方法。
WPFの場合このフィールドに設定されているDependencyPropertyのOverrideMetadata()を呼び出すと反映される。
Silverlightの場合は、TemplateControl と呼んでいて、DefaultStyleKeyPropertyに型を代入するのみ。 |
〇 |
〇 |
2
3
4(Silverlightのみ) |
WPFでも文字列をMemoryStreamに入れて読み込める。 |
〇 |
× |
5
6
|
WPFでは、FrameworkElementをシリアライズでき、ディープコピー、クローンに利用できる。
|
× |
〇 |
7 |
SilverlightのコンストラクタにはUIElement型の引数を取るものがあり、インスタンスをビットマップに変換できる。 |
〇 |
× |
8 |
Visualをビットマップに変換する。 |
- ビルド時にXAMLファイルが処理され、実行形式に格納されたものを実行時に読み込む。
- 実行時にXAMLファイルを読み込む。
- 実行時にストリームを読み込む。
- 実行時に、文字列をXAML記述として読み込む。
- 実行時にFrameworkElementのインスタンスからXAML記述文字列を作る。
- 実行時にFrameworkElementのインスタンスからXAML記述文字列をストリームに出力する。
- 実行時にUIElementをビットマップに変換する。
- 実行時にVisualをビットマップに変換する。
※1 XAMLを読み込むと、FrameworkElementやスタイルはインスタンスが生成される。
※2 System.Windows.Xps.Packaging.XpsDocument もXAMLを扱う。
参照
問題を整理すると、
-
XAMLを分割して記述する方法
-
記述1つから複数のインスタンスを得る方法
と、言うことになります。
「カスタムコントロールのXAMLとコード」
「Styleとプロパティ」
「Styleとバインディング」
「DataContextとインスタンス」
「XAML記述とVisualの変換」
「1つのStyle記述から複数のインスタンス」
「FrameworkElementFactory(コードでTemplateを作る)」
|