34

ContentControl.TemplateとContentControl.ContentTemplateの違いは何ですか?そして、私はいつどちらを使用しますか?

たとえば、WPFのxamlファイルに書き込むことができます。

<ContentControl>
    <ContentControl.Template>
        <ControlTemplate>
            <Label Content="This is from the Template"/>
        </ControlTemplate>
    </ContentControl.Template>
</ContentControl>

ContentControlに注目してください。テンプレートタグ

または私はこれを書くことができます:

<ContentControl>
    <ContentControl.ContentTemplate>
        <DataTemplate>
            <Label Content="This is From the ContentTemplate"/>
        </DataTemplate>
    </ContentControl.ContentTemplate>
</ContentControl>

ContentControlに注目してください。ContentTemplateタグ

出力は同じように見えます。最初のケースではControlTemplateを使用し、他のケースではDataTemplateを使用します。ただし、.Templateまたは.ContentTemplateを使用する必要があるかどうかをどのように判断する必要がありますか?そして、これにはどのような影響がありますか(たとえば、DataBinding、Property Inheritanceなど)。

4

1 に答える 1

25

Templateプロパティは Control 自体の外観を定義し、ContentTemplateは Controlの領域のテンプレートを定義しContentます。MSDN の興味深い点:

Control に ControlTemplate がない場合、Control はアプリケーションに表示されません。

これは、両方のプロパティのデータ型を見るとより明確になります。

于 2011-09-27T10:45:07.933 に答える