什么是ContentControl.Template和ContentControl.ContentTemplate之间的区别

use*_*765 29 .net c# wpf xaml contentcontrol

ContentControl.Template和ContentControl.ContentTemplate有什么区别?我何时使用哪个?

例如,我可以在WPF的xaml文件中写入:

<ContentControl>
    <ContentControl.Template>
        <ControlTemplate>
            <Label Content="This is from the Template"/>
        </ControlTemplate>
    </ContentControl.Template>
</ContentControl>
Run Code Online (Sandbox Code Playgroud)

注意ContentControl.模板标签

或者我可以这样写:

<ContentControl>
    <ContentControl.ContentTemplate>
        <DataTemplate>
            <Label Content="This is From the ContentTemplate"/>
        </DataTemplate>
    </ContentControl.ContentTemplate>
</ContentControl>
Run Code Online (Sandbox Code Playgroud)

注意ContentControl.ContentTemplate标签

输出看起来相同,在第一种情况下,我使用ControlTemplate,在另一种情况下使用DataTemplate.但是,如果我必须使用.Template或.ContentTemplate,我应该怎么做?这有什么影响(例如DataBinding,Property Inheritance,...).

sll*_*sll 20

Template属性定义Control本身的外观,ContentTemplate定义ContentControl区域的模板.来自MSDN的有趣观点:

如果Control没有ControlTemplate,则Control不会出现在您的应用程序中.

当我们查看两个属性的数据类型时,这变得更加清晰: