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

実際、2 つの DataTemplate をマージできるとは思いません。1 つの親テンプレートと、親テンプレートに基づく 1 つの子を作成してみてください。テンプレートの使用を変更:

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 に答える