23 votes

Quelle est l'utilité de Path= dans XAML ?

J'utilise beaucoup de liaisons dans XAML et parfois j'utilise path= dans une liaison et parfois non. Dans quels cas ai-je besoin de path= et quand puis-je l'omettre ?

14voto

Richard Szalay Points 42486

Elle peut toujours être omise car il s'agit de la propriété par défaut de l'extension XAML Binding. Elle n'est spécifiée explicitement que par souci de clarté lorsque plusieurs propriétés sont utilisées.

12voto

Phil Points 19299

Ceci est dû au fait que la classe Binding possède un constructeur par défaut, utilisé lorsque vous avez des liaisons comme {Binding FallbackValue='HelloWorld', Path=MyProperty} et un constructeur qui a un seul argument Path.

Ainsi, lorsqu'il existe une liste de paires propriété/valeur, la liaison est créée comme suit

new Binding(){
  Path="MyProperty"
  ElementName="MyElement"
}

La seconde forme est utilisée pour les liaisons telles que {Binding MyProperty, ...} . Dans ce cas, la liaison est créée en tant que

new Binding("MyProperty"){
  ElementName = "MyElement",
  ...
}

Il est toujours correct (et peut-être même plus correct) de spécifier Path=, mais vous pouvez vous en passer.

7voto

Natxo Points 1383

Le chemin est utilisé pour spécifier le nom de la propriété de l'objet sous-jacent à laquelle se lier.

Lorsque vous vous liez au DataContext, vous pouvez omettre Path :

{Binding MyProperty}    

{Binding Path=MyProperty}

Lorsque vous devez spécifier une source autre que le DataContext vous pouvez utiliser Source , RelativeSource ou ElementName pour faire référence à l'objet, vous devrez donc généralement spécifier à quelle propriété de l'objet vous souhaitez établir votre liaison :

<Button Background="{Binding ElementName=refButton, Path=Background}"/>

<TextBlock Width="{Binding RelativeSource={RelativeSource Self}, Path=Parent.ActualWidth}"/>

4voto

Jehof Points 14720

Vous pouvez toujours omettre le Path= lorsque vous écrivez le chemin d'accès à la propriété directement derrière l'instruction Binding.

{Binding MyProperty}

est la même chose que

{Binding Path=MyProperty}

Lorsque vous mettez en ligne le chemin d'accès à la propriété, vous devez le spécifier avec Path=

{Binding FallbackValue='HelloWorld', Path=MyProperty}

3voto

rekire Points 16519

Comme l'a dit Richard Szalay, c'est facultatif s'il s'agit de la première propriété. Mais à mon avis, il est plus facile de lire si vous entrez la propriété du chemin. De plus, la mise en évidence du code est meilleure.

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