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 ?
Réponses
Trop de publicités?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.
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}"/>
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}