Quelle est la différence entre un ControlTemplate et DataTemplate dans WPF ?
Réponses
Trop de publicités?Généralement, un contrôle est rendu pour son propre bien, et ne reflète pas les données sous-jacentes. Par exemple, un Bouton ne serait pas lié à un objet métier - c'est purement de sorte qu'il peut être cliqué. Un ContentControl ou zone de liste, cependant, apparaissent généralement pour qu'ils puissent présenter les données de l'utilisateur.
Un DataTemplate, par conséquent, est utilisé pour fournir de la structure visuelle de données sous-jacente, tandis qu'un ControlTemplate n'a rien à voir avec les données sous-jacentes et fournit simplement la mise en page visuelle pour le contrôle de lui-même.
Un ControlTemplate général ne contiennent objet templatebinding expressions de liaison aux propriétés sur le contrôle de lui-même, tandis qu'un DataTemplate contiendra standard des expressions de Liaison, la liaison à l'propriétés de son DataContext (l'entreprise ou du domaine de l'objet ou de la vue modèle).
Très basiquement un ControlTemplate décrit comment afficher un Contrôle alors qu'un DataTemplate décrit comment afficher les Données.
Par exemple:
Une Étiquette est un contrôle et comprendra un ControlTemplate qui dit l'Étiquette doit être affiché à l'aide d'une Bordure autour d'un Contenu (un DataTemplate ou une autre de Contrôle).
Un Client de la classe est de Données et seront affichés à l'aide d'un DataTemplate qui pouvait dire pour afficher le type de Client comme un StackPanel contenant deux TextBlocks l'un montrant le Nom et l'autre affichant le numéro de téléphone. Il pourrait être utile de noter que toutes les classes sont affichées à l'aide de DataTemplates, il vous suffira généralement utiliser le modèle par défaut qui est un TextBlock avec le Texte de jeu de propriétés à la suite de l'Objet de la méthode ToString.
Troels Larsen a une bonne explication sur le forum MSDN
Modèle de contrôle : Style de contrôle représente.
Modèle de données : Représente le style de données (comment vous souhaitez afficher vos données).
Tous les contrôles utilisent le modèle de contrôle par défaut que vous pouvez substituer par la propriété template.
Par exemple
Modèle de bouton est un modèle de contrôle. Modèle de contenu de bouton est un modèle de données