基本上,我不明白这里的真正区别是什么:
TabItem的Microsoft代码使用:
<ContentPresenter ContentSource="Header" ... />
那么,什么时候会使用Content
属性而不是(或除了)ContentSource
?
答案 0 :(得分:16)
此属性仅在以下情况下使用 ContentPresenter位于模板中。 当模板包含 带ContentSource的ContentPresenter 设置为“Abc”,内容, ContentTemplate,和 ContentTemplateSelector属性 ContentPresenter是自动的 别名为Abc,AbcTemplate和 分别是AbcTemplateSelector。 从.NET Framework开始 版本3.5 Service Pack 1,设置 ContentSource到“Abc”也会导致 ContentStringFormat属性 别名为AbcStringFormat。
这两个最有用的值 属性是“内容”和“标题”。
(MSDN)
为方便起见, ContentSource
显然会立即设置更多属性。
实际上,宣言:
<ContentPresenter ContentSource="Header" />
执行以下初始化。
<ContentPresenter Content="{TemplateBinding Header}"
ContentTemplate="{TemplateBinding HeaderTemplate}"
ContentTemplateSelector="{TemplateBinding HeaderTemplateSelector}"
ContentStringFormat="{TemplateBinding HeaderStringFormat}" />
仅当模板化控件上存在依赖项属性时,它才会单独为每个属性执行此操作。