如何在运行时创建DataTemplate?

时间:2010-05-05 01:01:21

标签: c# .net wpf silverlight datatemplate

我在XAML中定义了DataTemplate,但我需要将其更改为在运行时定义,因为它的绑定是动态的。

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

有没有办法在代码隐藏中定义它? 谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用自定义DataTemplateSelector完成所需的操作,如果可能,我建议采用这种方法。也就是说,可以在代码中创建一个DataTemplate:

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

在此上下文中,type是您希望作为模板根目录的可视元素类型。如果有必要,你可以使用工厂添加其他元素,但在我使用它的一个案例中,我只是创建UserControl元素来表示我动态创建的不同模板。


我很抱歉,这显然不受Silverlight的支持。在Silverlight中,您必须使用XamlReader