c# - Cuál es la diferencia entre ContentControl.Template y ContentControl.ContentTemplate
.net wpf (1)
Template propiedad de Template define la apariencia de un control en sí mismo y ContentTemplate define la plantilla del área de Content
de un control. Un punto interesante de MSDN:
Si un Control no tiene un ControlTemplate, el Control no aparecerá en su aplicación.
Esto se vuelve más claro cuando echamos un vistazo a los tipos de datos de ambas propiedades:
- Template tipo de propiedad de Template es ControlTemplate
- ContentTemplate tipo de propiedad ContentTemplate es DataTemplate y puede cambiarlo en tiempo de ejecución mediante ContentControl.ContentTemplateSelector
¿Cuál es la diferencia entre ContentControl.Template y ContentControl.ContentTemplate? ¿Y cuándo uso qué?
Por ejemplo, podría escribir en un archivo xaml para WPF:
<ContentControl>
<ContentControl.Template>
<ControlTemplate>
<Label Content="This is from the Template"/>
</ControlTemplate>
</ContentControl.Template>
</ContentControl>
Observe el ContentControl. Etiqueta de plantilla
o podría escribir esto:
<ContentControl>
<ContentControl.ContentTemplate>
<DataTemplate>
<Label Content="This is From the ContentTemplate"/>
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>
Observe el ContentControl. Etiqueta ContentTemplate
El resultado es el mismo y en el primer caso uso ControlTemplate y en el otro, DataTemplate. Sin embargo, ¿cómo debo diferir si tengo que usar .Template o .ContentTemplate? Y qué implicaciones tiene esto (por ejemplo, en DataBinding, Property Herencia, ...).