0

我想在运行时更改 DataTemplate 的内容,内容由最终用户设计,并以 xaml 格式保存在文件中。

DataTemplate 的定义如下:

<DataTemplate x:Key="DataTemplate1">
    <Grid>
        <Canvas x:Name="canvas1" />
    </Grid>
</DataTemplate>

最终用户设计的内容是这样的:

<Canvas x:Name="canvas1">
    <Label ...>
    ...
</Canvas>

我想使用代码将最终用户设计的内容合并到数据模板中:

DataTemplate templateObj = FindResource("DataTemplate1");

现在我不知道如何更改 templateObj 来合并内容,最后 templateObj 会是这样的:

    <DataTemplate x:Key="DataTemplate1">
        <Grid>
            <Canvas x:Name="canvas1">
                <Label ...>
                ...
            </Canvas>
        </Grid>
    </DataTemplate>
4

2 回答 2

0

实际上,我认为您不能对两个 DataTemplate 进行调整。尝试创建一个父模板和一个基于父模板的子模板。更改模板使用:

DataTemplate summary = this.FindResource("SimpleTemplate") as DataTemplate;
YourControl.ItemTemplate = summary;
于 2013-11-12T08:42:18.007 回答
0

好的,谢谢你,阿列克谢。

我使用一个子 DataTemplate 来解决它。像这样:

<DataTemplate x:Key="DataTemplate1">
        <Grid>
            <ContentControl ContentTemplateSelector="..."/>
        </Grid>
    </DataTemplate>

在 ContentTemplateSelector 中,使用 XamlReader 生成具有指定内容的 DataTemplate。

于 2013-11-13T09:03:51.123 回答