2010-08-17 2 views
35

J'ai vu beaucoup d'exemples de liaison WPF et j'ai utilisé la fonctionnalité dans beaucoup d'endroits différents pour apprendre MVVM, mais quelque chose qui m'a semblé assez incohérent est quand vous spécifiez "Path =" dans la chaîne de liaison. simplement saisir la propriété à laquelle vous voulez vous lier. Par exemple, quelle est la différence fonctionnelle entre les attributs XAML suivants:Quand utiliser le chemin dans la liaison WPF?

DataMemberBinding="{Binding SomeProperty}" 
DataMemberBinding="{Binding Path=SomeProperty}" 

Répondre

38

Il n'y a pas de différence fonctionnelle. La propriété par défaut de l'objet Binding est Path, ce qui signifie que si vous ne spécifiez pas la propriété que vous définissez, vous définirez Path. Cela est dû au fait que l'objet Binding a deux constructeurs, un par défaut et un qui accepte un paramètre de chaîne unique. Lorsque vous passez une valeur sans l'étiqueter, cette propriété sera transmise au constructeur correspondant, dans le cas de Binding, cela définit le chemin. Il est très similaire au concept de la façon de travailler des attributs, un appel au constructeur suivi de paramètres optionnels, par exemple:

[AttributeUsage(AttributeTargets.Class), AllowMultiple = false, Inherited = false ] 

probablement façon au-delà de ce que vous demandez en fait la question, mais j'ai remarqué qu'il y a une légère différence (et probablement sans conséquence) entre les deux. Puisque je ne peux pas l'expliquer moi-même, j'ai commencé une nouvelle question à ce sujet here.

+0

Donc si je voulais spécifier d'autres paramètres comme Mode alors je devrais marquer explicitement cela comme un chemin? –

+7

Non, pas si le chemin est votre premier argument: fonctionnera, ne fonctionnera pas, volonté. –