166 votes

WPF TemplateBinding vs RelativeSource TemplatedParent

Quelle est la différence entre ces 2 liaisons :

et

?

202voto

Grant BlahaErath Points 1763

Objet templatebinding n'est pas tout à fait la même chose. MSDN docs sont souvent écrits par des gens qui ont de quiz monosyllabique SDEs sur les fonctionnalités du logiciel, de sorte que les nuances ne sont pas tout à fait droit.

TemplateBindings sont évalués au moment de la compilation contre le type spécifié dans le modèle de contrôle. Cela permet d'accélérer l'instanciation de compilé modèles. Juste à chercher le nom d'un objet templatebinding et vous verrez que le compilateur va le marquer.

La liaison de balisage est résolu au moment de l'exécution. Bien que plus lent à l'exécution, la liaison de résoudre les noms de propriétés qui ne sont pas visibles sur le type déclaré par le modèle. Plus lents, je vais souligner que son genre de par rapport, depuis l'opération de liaison prend très peu de l'application de la cpu. Si vous avez été dynamitage des modèles de contrôle autour à grande vitesse, vous remarquerez peut-être.

En pratique, l'utilisation de l'objet templatebinding quand vous le pouvez, mais n'ont pas peur de la Liaison.

34voto

Paul Fischer Points 99

Objet templatebinding - Plus limitant que l'utilisation régulière de Liaison

  • Plus efficace qu'une Liaison mais il a moins de fonctionnalités
  • Ne fonctionne qu'à l'intérieur d'un ControlTemplate visuelle de l'arbre
  • Ne fonctionne pas avec les propriétés Freezables
  • Ne fonctionne pas à l'intérieur d'un ControlTemplate de Déclenchement de la
  • Fournit un raccourci dans la définition des propriétés(pas comme verbose),par exemple: {objet templatebinding targetProperty}

Régulière de Liaison - N'ont pas de limitations ci-dessus de l'objet templatebinding

  • Respecte Les Propriétés Parent
  • Réinitialise les Valeurs Cibles à éliminer les définir explicitement des valeurs
  • Exemple: <Ellipse Fill="{Binding RelativeSource={RelativeSource TemplatedParent},Path=Arrière-Plan}"/>

21voto

Une dernière chose - TemplateBindings n’autorise la conversion de valeur. Ils ne vous permettent pas de passer un convertisseur et n’automatiquement convertissent int en string par exemple (ce qui est normal pour une liaison).

17voto

Nir Points 18250

TempleteBinding est un raccourci pour la liaison avec TemplatedParent mais il n’expose pas toutes les fonctionnalités de la classe Binding, par exemple, vous ne pouvez pas contrôler Binding.Mode de TempleteBinding.

0voto

David Rogers Points 166

Ils sont utilisés d’une manière similaire, mais ils ont quelques différences. Voici un lien vers la documentation de TemplateBinding : http://msdn.microsoft.com/en-us/library/ms742882.aspx

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