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 /})?

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=.}".


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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.