¿Qué significa "{Binding Path =.}" En el enlace WPF?

91

¿Qué {Binding Path=.}significa en un enlace WPF?

Veo que algunas personas lo usan, pero no pude encontrar ninguna explicación.

¿Hay otros símbolos especiales en la sintaxis de enlace (que no sea {Binding /})?

Sergey Aldoukhov
fuente

Respuestas:

59

Esta es una forma abreviada de vincular a la fuente actual. Para obtener más información, consulte aquí .

De la documentación específicamente:

Opcionalmente, se puede utilizar una ruta de punto (.) Para enlazar con la fuente actual. Por ejemplo, Text="{Binding}"es equivalente a Text="{Binding Path=.}".

micahtan
fuente
1
@Ray - mis pensamientos exactamente. Si vas a taquigrafía, ¿por qué detenerte ahí?
micahtan
5
No puedo discutir con MSDN, pero todavía hay una diferencia. {Binding} no se puede usar en un objeto en sí mismo (siendo bidireccional requiere una propiedad) mientras que {Binding Path =.} Funciona.
Sergey Aldoukhov
@Sergey - ¿Tiene un ejemplo de código en el que {Binding} no funciona pero {Binding Path =.} Sí? Si es así, MSDN probablemente necesita actualizarse ...
micahtan
Fácilmente: var s = "test; DataContext = s; y en <TextBox Text = {Binding} /> - no funciona. Pero MSDN no es wiki ...
Sergey Aldoukhov
8
Otro ejemplo: <TextBlock Text = "{Binding Converter = ...}" /> no funciona porque tiene que establecer la ruta. En ese caso Path =. es útil.
Nicolas
67

Encontré esta hoja de trucos de enlace WPF hace unos meses y lo encuentro muy útil, especialmente para cualquiera que esté aprendiendo WPF. Tiene algunos errores ortográficos, pero sigue siendo bastante bueno.

Aquí hay un pequeño extracto (que se supone que tiene formato tabular):

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”. 

Enlace directo a CheatSheet

Ryan Versaw
fuente
2
bueno, pero lo que es {Binding.}. Estoy buscando una explicación para este pero no puedo encontrarla.
batmaci
@batmaci Quiero decir que es equivalente a {Binding }, pero han pasado bastantes años desde que trabajé mucho con Xaml, así que no estoy seguro.
Ryan Versaw
@batmaci, años después ... {Binding string}es similar a {Binding Path=string}. stringno se usa para inicializar la propiedad Pathdirectamente, sino como un parámetro para el constructor Binding (string path)que luego inicializa la Pathpropiedad. Esto solo funciona cuando la cadena es el primer token posterior Binding, el resto son inicializadores regulares (propiedad = pares de valor). Sabiendo eso, Binding .es en efecto igual a una Binding Path=.propiedad, la sintaxis de ruta está disponible aquí .
minutos