如何在WPF中将最终用户定义的内容合并到DataTemplate,有些人喜欢在运行时更改DataTemplate内容

时间:2013-11-12 08:09:33

标签: wpf merge datatemplate

我想在运行时更改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>

2 个答案:

答案 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。