Как создать DataTemplate во время выполнения? - PullRequest
0 голосов
/ 05 мая 2010

Я определил DataTemplate в XAML, однако мне нужно изменить его, чтобы он был определен во время выполнения, поскольку его привязка является динамической.

 <UserControl.Resources>
   <DataTemplate x:Key="myCellTemplate">
     <TextBlock Text="{Binding Description}" Margin="4"/>
   </DataTemplate>
 </UserControl.Resources>

Есть ли способ определить это в коде позади? Спасибо.

1 Ответ

1 голос
/ 05 мая 2010

Возможно, вы сможете выполнить то, что вам нужно, с помощью пользовательского DataTemplateSelector , и я рекомендую этот подход, если это возможно. Тем не менее, можно создать DataTemplate в коде:

Type type = typeof(MyUserControl); //for example    
var template = new DataTemplate();
template.VisualTree = new FrameworkElementFactory(type);
return template;

В этом контексте type - это тип визуального элемента, который вы хотите использовать в качестве корня вашего шаблона. При необходимости вы можете добавить дополнительные элементы, используя фабрику, но в одном случае, когда я использовал это, я просто создал элементы UserControl для представления различных шаблонов, которые я динамически создавал.


Мои извинения, это, очевидно, не поддерживается в Silverlight. В Silverlight вы должны использовать XamlReader .

...