2009-04-09 18 views
5

実行時にControlTemplateを定義したいと思います。これは可能ですか?私はControlTemplateクラスのVisualTreeプロパティに気付きました。私は、FrameworkElementFactoryクラスを使用していることに気付きました。しかし、私はそれを動作させるように見えることはできません。実行時にWPF ControlTemplateを定義する

実行時にControlTemplateを作成することはできますか?

答えて

8

はい、これはFrameworkElementFactoryを使用して行うことができます。 Charles Petzoldは、この「アプリケーション=コード+マークアップ」の第11章でこのウォークスルーを行っていますが、基本的な考え方は、テンプレートルート要素(さらにはすべての子要素のファクトリ)のFrameworkElementFactoryを作成し、ControlTemplateを作成し、 ControlTemplateのVisualTreeプロパティをFrameworkElementFactoryに設定します。

FrameworkElementFactory borderFactory = new FrameworkElementFactory(typeof(Border)); 
// set properties and create children of borderFactory 
ControlTemplate template = new ControlTemplate(); 
template.VisualTree = borderFactory; 

myButtonInstance.Template = template; 
-1

WPFコントロールクラスには、実行時にaを設定できる「テンプレート」プロパティがあります。

関連する問題