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?
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.
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.
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}"/>
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}
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.