Quelle est l'utilisation de Path = dans XAML?

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

21
demandé sur Michel Keijzers 2012-02-17 15:53:09

5 réponses

Il peut toujours être omis car il s'agit de la propriété par défaut de L'extension XAML de liaison. Il est uniquement spécifié explicitement pour plus de clarté lorsque plusieurs propriétés sont utilisées.

11
répondu Richard Szalay 2012-02-17 13:11:16

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

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

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

La deuxième forme est utilisée pour les liaisons comme {Binding MyProperty, ...}. Dans ce cas, la liaison est créée comme

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

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

11
répondu Phil 2012-02-17 19:21:04

Chemin est utilisé pour spécifier le nom de la propriété de l'objet sous-jacent à 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 faire référence à l'objet, de sorte que vous aurez généralement à spécifier à la propriété sur laquelle vous souhaitez définir votre liaison:

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

<TextBlock Width="{Binding RelativeSource={RelativeSource Self}, Path=Parent.ActualWidth}"/>
7
répondu Natxo 2012-02-17 12:38:01

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

{Binding MyProperty}

Est le même que

{Binding Path=MyProperty}

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

{Binding FallbackValue='HelloWorld', Path=MyProperty}
4
répondu Jehof 2012-02-17 12:00:53

Comme Richard Szalay l'a dit, il est facultatif s'il s'agit de la première propriété. Mais dans mon opionion, il est plus facile à lire si vous entrez la propriété path. En outre, la mise en évidence du code semble mieux.

3
répondu rekire 2012-02-17 12:01:12