Que signifie «{Binding Path =.}» Dans la liaison WPF?

91

Que fait {Binding Path=.} signifie une liaison WPF?

Je vois que certaines personnes l'utilisent, mais je n'ai trouvé aucune explication.

Existe-t-il d'autres symboles spéciaux dans la syntaxe de liaison (autres que {Binding /})?

Sergey Aldoukhov
la source

Réponses:

59

C'est un raccourci pour la liaison à la source actuelle. Pour plus d'informations, cliquez ici .

De la documentation spécifiquement:

En option, un chemin de point (.) Peut être utilisé pour se lier à la source actuelle. Par exemple, Text="{Binding}"équivaut à Text="{Binding Path=.}".

micahtan
la source
1
@ Ray - mes pensées exactement. Si vous allez à la sténographie, pourquoi vous arrêter là?
micahtan
5
Je ne peux pas discuter avec MSDN, mais il y a toujours une différence. {Binding} ne peut pas être utilisé sur un objet lui-même (étant dans les deux sens, il nécessite une propriété) tant que {Binding Path =.} Fonctionne.
Sergey Aldoukhov
@Sergey - Avez-vous un exemple de code où {Binding} ne fonctionne pas mais {Binding Path =.} Fonctionne? Si tel est le cas, MSDN doit probablement être mis à jour ...
micahtan
Facilement: var s = "test; DataContext = s; et dans <TextBox Text = {Binding} /> - ne fonctionne pas. Mais MSDN n'est pas wiki ...
Sergey Aldoukhov
8
Autre exemple: <TextBlock Text = "{Binding Converter = ...}" /> ne fonctionne pas car vous devez définir le chemin. Dans ce cas, Path =. est utile.
Nicolas
67

J'ai trouvé cette feuille de triche de liaison WPF a quelques mois et je la trouve très utile, en particulier pour tous ceux qui apprennent WPF. Il y a des fautes d'orthographe, mais c'est quand même assez bon.

Voici un petit extrait (qui est censé avoir une mise en forme tabulaire):

Basic Binding   
{Binding}  Bind to current DataContext. 
{Binding Name}  Bind to the “Name” proeprty of the current DataContext. 
{Bindind Name.Length}  Bind to the Length property of the object in the Name property of the current DataContext. 
{Binding ElementName=SomeTextBox, Path=Text}  Bind to the “Text” property of the element XAML element with name=”SomeTextBox” or x:Name=”SomeTextBox”. 

Lien direct vers CheatSheet

Ryan Versaw
la source
2
belle mais qu'est-ce que {Binding.}. Je cherche une explication pour celle-ci mais je ne la trouve pas?
batmaci
@batmaci Je veux dire que c'est équivalent à {Binding }, mais cela fait pas mal d'années que je n'ai pas beaucoup travaillé avec Xaml, donc je ne suis pas sûr.
Ryan Versaw
@batmaci, des années plus tard ... {Binding string}est similaire à {Binding Path=string}. stringn'est pas utilisé pour initialiser la propriété Pathdirectement, mais comme paramètre pour le constructeurBinding (string path) qui initialise ensuite la Pathpropriété. Cela ne fonctionne que lorsque la chaîne est le premier jeton après Binding, le reste étant des initialiseurs réguliers (paires propriété = valeur). Sachant cela, Binding .est en effet égal à Binding Path=.et la syntaxe de la propriété Path est disponible ici .
min