227 votes

Différence entre le modèle de contrôle et DataTemplate dans WPF

Quelle est la différence entre un ControlTemplate et DataTemplate dans WPF ?

299voto

Matt Hamilton Points 98268

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).

125voto

Bryan Anderson Points 9044

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.

35voto

onmyway133 Points 2196

Troels Larsen a une bonne explication sur le forum MSDN

25voto

sayed saad Points 359

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

10voto

Syed Points 340

ControlTemplate - changer l’apparence de l’élément. Par exemple, le bouton peut contenir image et texte DataTemplate - qui représentent les données sous-jacentes à l’aide des éléments.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X