我想在运行时更改DataTemplate的内容,内容由最终用户设计,并以xaml格式保存在文件中。
DataTemplate的定义如下:
<DataTemplate x:Key="DataTemplate1">
<Grid>
<Canvas x:Name="canvas1" />
</Grid>
</DataTemplate>
和最终用户设计的内容如下:
<Canvas x:Name="canvas1">
<Label ...>
...
</Canvas>
我想使用代码将最终用户设计的内容混合到datatemplate:
DataTemplate templateObj = FindResource("DataTemplate1");
现在我不知道如何更改templateObj来合并内容,最后templateObj会喜欢这样:
<DataTemplate x:Key="DataTemplate1">
<Grid>
<Canvas x:Name="canvas1">
<Label ...>
...
</Canvas>
</Grid>
</DataTemplate>
答案 0 :(得分:0)
实际上我认为你不能合并两个数据模板。尝试创建一个父模板和一个基于父模板的子模板。更改模板使用:
DataTemplate summary = this.FindResource("SimpleTemplate") as DataTemplate;
YourControl.ItemTemplate = summary;
答案 1 :(得分:0)
好的,谢谢你,Aleksey。
我使用子DataTemplate来解决它。就像这样:
<DataTemplate x:Key="DataTemplate1">
<Grid>
<ContentControl ContentTemplateSelector="..."/>
</Grid>
</DataTemplate>
在ContentTemplateSelector中,使用XamlReader生成具有指定内容的DataTemplate。