Возможно, вы сможете выполнить то, что вам нужно, с помощью пользовательского DataTemplateSelector , и я рекомендую этот подход, если это возможно. Тем не менее, можно создать DataTemplate в коде:
Type type = typeof(MyUserControl); //for example
var template = new DataTemplate();
template.VisualTree = new FrameworkElementFactory(type);
return template;
В этом контексте type
- это тип визуального элемента, который вы хотите использовать в качестве корня вашего шаблона. При необходимости вы можете добавить дополнительные элементы, используя фабрику, но в одном случае, когда я использовал это, я просто создал элементы UserControl для представления различных шаблонов, которые я динамически создавал.
Мои извинения, это, очевидно, не поддерживается в Silverlight. В Silverlight вы должны использовать XamlReader .