mikeo_410


 XAML記述とVisualの変換

方法 WPF Silverlight タイプ 備考
Application.LoadComponent 1 ビハインドコードがXAMLを読み込む普通の方法。
リソースだけを読むことはできない。
引数がUri型なので他のストリームからも入力できる可能性がある。
DefaultStyleKeyProperty
1 カスタムコントロールに generic.xaml の記述内容を反映する方法。
WPFの場合このフィールドに設定されているDependencyPropertyのOverrideMetadata()を呼び出すと反映される。
Silverlightの場合は、TemplateControl と呼んでいて、DefaultStyleKeyPropertyに型を代入するのみ。
XamlReader.Load 2
3
4(Silverlightのみ)
WPFでも文字列をMemoryStreamに入れて読み込める。
XamlWriter.Save ×

5
6

WPFでは、FrameworkElementをシリアライズでき、ディープコピー、クローンに利用できる。

WriteableBitmap() × 7 SilverlightのコンストラクタにはUIElement型の引数を取るものがあり、インスタンスをビットマップに変換できる。
RenderTargetBitmap.Render × 8 Visualをビットマップに変換する。

  1. ビルド時にXAMLファイルが処理され、実行形式に格納されたものを実行時に読み込む。
  2. 実行時にXAMLファイルを読み込む。
  3. 実行時にストリームを読み込む。
  4. 実行時に、文字列をXAML記述として読み込む。
  5. 実行時にFrameworkElementのインスタンスからXAML記述文字列を作る。
  6. 実行時にFrameworkElementのインスタンスからXAML記述文字列をストリームに出力する。
  7. 実行時にUIElementをビットマップに変換する。
  8. 実行時にVisualをビットマップに変換する。

  ※1 XAMLを読み込むと、FrameworkElementやスタイルはインスタンスが生成される。
  ※2 System.Windows.Xps.Packaging.XpsDocument もXAMLを扱う。

参照

  問題を整理すると、

  1. XAMLを分割して記述する方法
  2. 記述1つから複数のインスタンスを得る方法

  と、言うことになります。

カスタムコントロールのXAMLとコード
Styleとプロパティ
Styleとバインディング
DataContextとインスタンス
XAML記述とVisualの変換
1つのStyle記述から複数のインスタンス

FrameworkElementFactory(コードでTemplateを作る)


mikeo_410@hotmail.com