我想在运行时定义一个 ControlTemplate。这可能吗?我注意到 ControlTemplate 类上的 VisualTree 属性。我还注意到它使用了 FrameworkElementFactory 类。但是,我似乎无法让它工作。
是否可以在运行时创建 ControlTemplate?
我想在运行时定义一个 ControlTemplate。这可能吗?我注意到 ControlTemplate 类上的 VisualTree 属性。我还注意到它使用了 FrameworkElementFactory 类。但是,我似乎无法让它工作。
是否可以在运行时创建 ControlTemplate?
是的,您可以使用 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;
WPF 控件类有一个“模板”属性,您可以在运行时对其进行设置。