内容控制之间的区别是什么?模板和ContentControl.ContentTemplate

本文关键字:ContentControl ContentTemplate 之间 区别 是什么 内容控制 | 更新日期: 2023-09-27 18:09:40

模板和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 ?这意味着什么(例如,在数据绑定,属性继承,…)。

内容控制之间的区别是什么?模板和ContentControl.ContentTemplate

Template属性定义控件本身的外观,而ContentTemplate定义控件的Content区域的模板。来自MSDN的有趣观点:

如果控件没有ControlTemplate,则该控件将没有出现在应用程序中。

当我们看一下这两个属性的数据类型时,这就更清楚了:

  • 模板属性类型为ControlTemplate
  • ContentTemplate属性类型是DataTemplate,你可以在运行时使用ContentControl切换它。ContentTemplateSelector