17

基本上,我不明白这里的真正区别是什么:

TabItem 的 Microsoft 代码使用:

<ContentPresenter ContentSource="Header" ... />

那么,什么时候会使用该Content属性来代替(或除此之外)ContentSource

4

1 回答 1

24

仅当 ContentPresenter 在模板中时才应使用此属性。当模板包含 ContentPresenter 且 ContentSource 设置为“Abc”时,ContentPresenter 的 Content、ContentTemplate 和 ContentTemplateSelector 属性将自动分别别名为 Abc、AbcTemplate 和 AbcTemplateSelector。从 .NET Framework 3.5 Service Pack 1 开始,将 ContentSource 设置为“Abc”还会导致 ContentStringFormat 属性别名为 AbcStringFormat。

此属性的两个最有用的值是“Content”和“Header”。

( MSDN )

ContentSource为了方便起见,显然一次设置了更多属性。


实际上,声明:

<ContentPresenter ContentSource="Header" />

执行以下初始化。

<ContentPresenter Content="{TemplateBinding Header}"
                  ContentTemplate="{TemplateBinding HeaderTemplate}"
                  ContentTemplateSelector="{TemplateBinding HeaderTemplateSelector}"
                  ContentStringFormat="{TemplateBinding HeaderStringFormat}" />

仅当依赖属性存在于模板化控件上时,它才会分别对每个属性执行此操作。

于 2011-04-08T20:08:15.413 回答