2011-04-08 11 views
13

Básicamente, no entiendo cuál es la diferencia real es aquí:ContentPresenter.ContentSource vs contenido

El código de Microsoft para TabItem utiliza:

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

lo tanto, cuando alguien woudl utilizar la propiedad en lugar Content (o además de)?

Respuesta

16

Esta propiedad solo se debe utilizar cuando el ContentPresenter se encuentre en una plantilla. Cuando una plantilla contiene una ContentPresenter con ContentSource conjunto a "ABC", el contenido, ContentTemplate, y propiedades ContentTemplateSelector de la ContentPresenter son automáticamente alias de Abc, AbcTemplate, y AbcTemplateSelector, respectivamente. A partir de la versión 3.5 de .NET Framework Service Pack 1, el establecimiento de ContentSource a "Abc" también hace que la propiedad sea ContentStringFormat alias a AbcStringFormat.

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

(MSDN)

ContentSource aparentemente establece más propiedades a la vez para mayor comodidad.


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

Se hace esto para cada propiedad por separado sólo si existe la propiedad de dependencia en el control de plantilla.

Cuestiones relacionadas