2011-09-27 15 views
25

Qual è la differenza tra ContentControl.Template e ContentControl.ContentTemplate? E quando devo usare quale?Qual è la differenza tra ContentControl.Template e ContentControl.ContentTemplate

Per esempio potrei scrivere in un file XAML per WPF:

<ContentControl> 
    <ContentControl.Template> 
     <ControlTemplate> 
      <Label Content="This is from the Template"/> 
     </ControlTemplate> 
    </ContentControl.Template> 
</ContentControl> 

Avviso del ContentControl. Template Tag

o potrei scrivere questo:

<ContentControl> 
    <ContentControl.ContentTemplate> 
     <DataTemplate> 
      <Label Content="This is From the ContentTemplate"/> 
     </DataTemplate> 
    </ContentControl.ContentTemplate> 
</ContentControl> 

Avviso del ContentControl. ContentTemplate Tag

L'output è lo stesso e nel primo caso io uso un ControlTemplate e nell'altra una DataTemplate. Tuttavia, come dovrei declassare se devo usare .Template o .ContentTemplate? E quali implicazioni ha questo (per esempio su DataBinding, Property Inheritance, ...).

risposta

18

Template proprietà definisce l'aspetto di un controllo stesso e ContentTemplate definisce il modello dell'area Content di un controllo. Punto interessante da MSDN:

Se un Control non ha un ControlTemplate, il Control non sarà visualizzato nell'applicazione.

Ciò diventa più chiaro quando diamo uno sguardo ai tipi di dati di entrambe le proprietà:

+1

Il tipo di 'modello' è' ControlTemplate', non 'ContentControl'. – romanoza

Problemi correlati