wpf xaml controltemplate contentpresenter

wpf - ContentPresenter.ContentSource vs Content



xaml controltemplate (1)

Esta propiedad solo se debe usar cuando ContentPresenter se encuentre en una plantilla. Cuando una plantilla contiene un ContentPresenter con ContentSource establecido en "Abc", las propiedades Content, ContentTemplate y ContentTemplateSelector de ContentPresenter se alias automáticamente a Abc, AbcTemplate y AbcTemplateSelector, respectivamente. A partir de .NET Framework versión 3.5 Service Pack 1, establecer ContentSource en "Abc" también hace que la propiedad ContentStringFormat tenga un alias de AbcStringFormat.

Los dos valores más útiles para esta propiedad son "Contenido" y "Encabezado".

( MSDN )

ContentSource aparentemente establece más propiedades a la vez por conveniencia.

Prácticamente, la declaración:

<ContentPresenter ContentSource="Header" />

Realiza la siguiente inicialización.

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

Hace esto para cada propiedad por separado solo si la propiedad de dependencia existe en el control de plantilla.

Básicamente, no entiendo cuál es la verdadera diferencia aquí:

El código de Microsoft para TabItem usa:

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

Entonces, ¿cuándo alguien usará la propiedad Content lugar (o además de)?