O que significa “{Binding Path =.}” Na vinculação WPF?

91

O que {Binding Path=.}significa em uma ligação WPF?

Vejo que algumas pessoas usam, mas não encontrei explicação.

Existem outros símbolos especiais na sintaxe de ligação (além de {Binding /})?

Sergey Aldoukhov
fonte

Respostas:

59

Esta é uma forma abreviada de vinculação à fonte atual. Para mais informações, veja aqui .

Da documentação especificamente:

Opcionalmente, um caminho de ponto final (.) Pode ser usado para vincular à fonte atual. Por exemplo, Text="{Binding}"é equivalente a Text="{Binding Path=.}".

micahtan
fonte
1
@Ray - exatamente meus pensamentos. Se você está abreviando, por que parar por aí?
micahtan
5
Não posso discutir com o MSDN, mas ainda há uma diferença. {Binding} não pode ser usado em um objeto em si (sendo bidirecional, requer uma propriedade) enquanto {Binding Path =.} Funciona.
Sergey Aldoukhov
@Sergey - você tem uma amostra de código em que {Binding} não funciona, mas {Binding Path =.} Sim? Se for assim, o MSDN provavelmente precisa ser atualizado ...
micahtan
Facilmente: var s = "test; DataContext = s; e em <TextBox Text = {Binding} /> - não funciona. Mas MSDN não é wiki ...
Sergey Aldoukhov
8
Outro exemplo: <TextBlock Text = "{Binding Converter = ...}" /> não funciona porque você deve definir o caminho. Nesse caso, Path =. é útil.
Nicolas
67

Eu encontrei este WPF Binding CheatSheet alguns meses atrás e acho-o muito útil, especialmente para quem está aprendendo WPF. Existem alguns erros de ortografia, mas ainda é muito bom.

Aqui está um pequeno trecho (que deve ter formatação 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”. 

Link direto para CheatSheet

Ryan Versaw
fonte
2
bom, mas o que é {Binding.}. Estou procurando uma explicação para este, mas não consigo encontrar?
batmaci
@batmaci, quero dizer que é equivalente a {Binding }, mas já faz alguns anos que não trabalho muito com o Xaml, então não tenho certeza.
Ryan Versaw
@batmaci, anos depois ... {Binding string}é semelhante a {Binding Path=string}. stringnão é usado para inicializar a propriedade Pathdiretamente, mas como um parâmetro para o construtor Binding (string path)que então inicializa a Pathpropriedade. Isso funciona apenas quando a string é o primeiro token depois Binding, o resto sendo inicializadores regulares (propriedade = pares de valor). Sabendo disso, Binding .é na verdade igual a Binding Path=.e a sintaxe de caminho de propriedade está disponível aqui .
minutos de