在运行时定义WPF ControlTemplate

时间:2009-04-09 04:00:36

标签: wpf controltemplate

我想在运行时定义一个ControlTemplate。这可能吗?我注意到ControlTemplate类上的VisualTree属性。我还注意到它使用了FrameworkElementFactory类。但是,我似乎无法让它发挥作用。

是否可以在运行时创建ControlTemplate?

2 个答案:

答案 0 :(得分:8)

是的,您可以使用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;

答案 1 :(得分:-1)

WPF Control类具有“模板”属性,您可以在运行时设置该属性。