我在XAML中定义了DataTemplate,但我需要将其更改为在运行时定义,因为它的绑定是动态的。
<UserControl.Resources>
<DataTemplate x:Key="myCellTemplate">
<TextBlock Text="{Binding Description}" Margin="4"/>
</DataTemplate>
</UserControl.Resources>
有没有办法在代码隐藏中定义它? 谢谢。
答案 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。