Определите WPF ControlTemplate во время выполнения - PullRequest
5 голосов
/ 09 апреля 2009

Я хотел бы определить ControlTemplate во время выполнения. Это возможно? Я заметил свойство VisualTree в классе ControlTemplate. Я также заметил, что он использует класс FrameworkElementFactory. Однако я не могу заставить его работать.

Можно ли создать шаблон ControlTemplate во время выполнения?

Ответы [ 2 ]

8 голосов
/ 09 апреля 2009

Да, вы можете сделать это с помощью FrameworkElementFactory. Чарльз Петцольд имеет пошаговое руководство по этому вопросу в главе 11 «Applications = Code + Markup», но основная идея состоит в том, что вы создаете FrameworkElementFactory для корневого элемента шаблона (и дальнейшие фабрики для любых дочерних элементов), создаете ControlTemplate и устанавливаете свойство VisualTree элемента ControlTemplate для FrameworkElementFactory:

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

myButtonInstance.Template = template;
0 голосов
/ 09 апреля 2009

Класс управления WPF имеет свойство 'Template', которое вы можете установить во время выполнения.

...