105

What does {Binding Path=.} mean in a WPF binding?

I see some people use it, but couldn't find any explanation.

Are there any other special symbols in binding syntax (other than {Binding /})?

2 Answers 2

89

I found this WPF Binding CheatSheet a few months back and find it very useful, especially for anyone learning WPF. There are some spelling mistakes within it, but it is still quite good.

Here is a small excerpt (which is supposed to have tabular formatting):

Basic Binding
{Binding} Bind to current DataContext.
{Binding Name} Bind to the “Name” property of the current DataContext.
{Binding 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”.

Direct link to CheatSheet

Sign up to request clarification or add additional context in comments.

3 Comments

nice one but what is {Binding .}. I am searching explanation for this one but I cant find it?
@batmaci I want to say it's equivalent to {Binding }, but it's been quite a few years since I've worked much with Xaml, so I'm not sure.
@batmaci, years later... {Binding string} is similar to {Binding Path=string}. string is not used to initialize the property Path directly, but as a parameter for the constructor Binding (string path) which then initializes Path property. This works only when the string is the first token after Binding, the rest being regular initializers (property=value pairs). Knowing that, Binding . is in effect equal to Binding Path=. and property Path syntax is available here.
70

This is shorthand for binding to the current source. For more info see here.

From the documentation specifically:

Optionally, a period (.) path can be used to bind to the current source. For example, Text="{Binding}" is equivalent to Text="{Binding Path=.}".

7 Comments

@Ray - my thoughts exactly. If you're going to shorthand, why stop there?
I can't argue with MSDN, but there still a difference. {Binding} cannot be used on an object itself (being two way it requires a property) while {Binding Path=.} works.
@Sergey - Do you have a code sample where {Binding} doesn't work but {Binding Path=.} does? If so, MSDN probably needs to get updated...
Easily: var s = "test; DataContext=s; and in <TextBox Text={Binding}/> - does not work. But MSDN is not wiki...
Another exemple : <TextBlock Text="{Binding Converter=...}"/> does not work because you have to set the Path. In that case Path=. is useful.
|

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.