web-dev-qa-db-ja.com

ContentControl.TemplateとContentControl.ContentTemplateの違いは何ですか

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など)。

32
user966765

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

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

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

20
sll