Mauro Valvano
Mauro Valvano

Reputation: 933

{Binding}, {Binding Data.XXX}, {Binding Path=XXX} and others in WPF

I followed different tutorials and example and they showed me those different type of binding but I can't understand when to use one and when use another.

For example sometimes I see simply:

Binding="{Binding}"

Sometimes (and this I understand how to use it) after setting the DataContext:

Binding="{Binding Propriety1}"

In DevExpress GridControl i see:

Binding="{Binding Data.ProprietyName}"

And others.
Can one explain shortly and clear why so different cases? I searched online but the tutorials say only what binding is (and I know what is) and a simple example like the third I wrote.

Thank you in advance.

Upvotes: 1

Views: 645

Answers (1)

Viv
Viv

Reputation: 17398

K here's the simple explanation you asked for:

Binding="{Binding}"

that is when you're binding the DataContext object itself. So whatever is the DataContext in the current scope where the binding is what is being bound. that can also be written as Binding="{Binding .}"

Next:

Binding="{Binding Propriety1}"

Here you're binding Propriety1 within the current DataContext. This one is the same as {Binding DataContext.Propriety1, RelativeSource={RelativeSource Self}}" />

Finally:

Binding="{Binding Data.ProprietyName}"

Here you're binding ProprietyName which belongs to Data which is a property declared in the current DataContext

All these are shown in this example: Download Link

<StackPanel x:Name="LayoutRoot">
  <TextBlock DataContext="{Binding TestStringOne}"
              Text="{Binding}" />
  <TextBlock DataContext="{Binding TestStringOne}"
              Text="{Binding .}" />
  <TextBlock Text="{Binding TestStringTwo}" />
  <TextBlock Text="{Binding Data.TestStringThree}" />
</StackPanel>

The properties and Data object's class you can find in MainViewModel.cs for these

Upvotes: 4

Related Questions