実行時に ControlTemplate を定義したいと思います。これは可能ですか?ControlTemplate クラスの VisualTree プロパティに気付きました。また、FrameworkElementFactory クラスを使用していることにも気付きました。しかし、私はそれを機能させることができないようです。
実行時に ControlTemplate を作成することは可能ですか?
実行時に ControlTemplate を定義したいと思います。これは可能ですか?ControlTemplate クラスの VisualTree プロパティに気付きました。また、FrameworkElementFactory クラスを使用していることにも気付きました。しかし、私はそれを機能させることができないようです。
実行時に ControlTemplate を作成することは可能ですか?
はい、FrameworkElementFactory を使用してこれを行うことができます。Charles Petzold は、「Applications = Code + Markup」の第 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;
WPF コントロール クラスには、実行時に設定できる「テンプレート」プロパティがあります。