6

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

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

4

2 回答 2

9

是的,您可以使用 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;
于 2009-04-09T04:24:17.707 回答
-2

WPF 控件类有一个“模板”属性,您可以在运行时对其进行设置。

于 2009-04-09T04:23:07.053 回答