ContentPresenter.ContentSource与内容

时间:2011-04-08 20:02:53

标签: wpf xaml controltemplate contentpresenter

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

TabItem的Microsoft代码使用:

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

那么,什么时候会使用Content属性而不是(或除了)ContentSource

1 个答案:

答案 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}" />

仅当模板化控件上存在依赖项属性时,它才会单独为每个属性执行此操作。