As a continuation of the question Linking DataContext with another property in WPF.
At the very end of the research I was very surprised to find out that when one writes something like that:
<Label Content="{Binding Path=Name}" />
The DataContext
against which the Content
property is binded is of the Label
control itself! The fact that it still works is due to the default inheritance of the DataContext value from the nearest parent.
But if you have this label wrapped in a custom control, and you don't want to bind your data to the DataContext
property of that control, you would more likely love to have:
<Controls:SearchSettings Settings="{Binding Path=Settings}" />
And here you are. Now you need to set Settings
as the DataContext
for the SearchSettings
control, for Label
inside to bind against, but you can't, because that will trigger re-binding of Settings
property.
I can't see the point in mixing binding properties using different sources: DataContext
, by ElementName
, etc.
So why would I ever use DataContext
?