Question

Quelles sont les différences entre la création d'un auto-référentiel de liaison via nom et d'un auto-référentiel via RelativeSource?

Par exemple:

<!-- Self referential via name -->
<Window ...
    x:Name="This"
    DataContext="{Binding Path=Data, ElementName=This}"/>

versus

<!-- Self referential via RelativeSource -->
<Window ...
    x:Name="This"
    DataContext="{Binding Path=Data, RelativeSource={RelativeSource Self}}"/>

Dans mon projet, ils semblent se comporter de manière identique, mais je les utilise directement dans une fenêtre. Cela signifie que je préfère immédiatement le premier parce que c’est moins taper.

Le seul avantage de RelativeSource est-il sa capacité à se référencer lui-même dans (par exemple) un style largement utilisé? Ou existe-t-il une différence sémantique supplémentaire?

Était-ce utile?

La solution

Avertissement: il ne s'agit pas d'un assistant WPF

Lorsque vous liez directement un élément WPF, comme dans votre exemple, il n'y a pas de différence. " Ce " peut être résolu et se liera au même élément que Self.

Je pense que la différence réside lorsque vous vous liez via des constructions telles que Style. Dans ce cas, ce que vous voulez réellement lier est l'élément auquel le style est appliqué. Dans ce cas, RelativeSource Self vous donnera cet élément où " this " je vous donnerai simplement une instance de Style.

Autres conseils

Si vous avez tendance à refactoriser les noms de vos contrôles beaucoup, utiliser la forme auto-réfractaire peut être plus souhaitable, sinon je dirais que c'est un appel que je ferais en fonction des performances. Construisez un petit test et voyez quel type de liaison fonctionne mieux et choisissez celui-là. Si la différence de performances est négligeable, je prendrai certainement en compte d'autres considérations de maintenabilité, telles que l'apparence générale et le temps de frappe. N'oubliez pas non plus que lorsque vous utilisez le formulaire auto-référentiel, vous n'avez pas besoin de nommer votre élément. Vous devez donc inclure cette exigence de dénomination supplémentaire pour le formulaire NomÉlément lorsque vous comparez la quantité de saisie et de changement de contexte entre la souris et le clavier.

Personnellement, je préfère les formulaires de reliure référentielle lorsqu'il est logique de simplifier le refactoring et de ne pas avoir à me déplacer dans mon document XAML pour ajouter un nom d'élément lors de la configuration de la liaison.

Pourquoi pensez-vous qu'il existe une différence entre eux? Je pense qu'ils devraient être identiques, car ce sont deux façons de se référer au même élément.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top