Bolu
Bolu

Reputation: 8786

Understand WPF Binding CommandParameter="{Binding}"

Maybe this is a dumb question, but I can't find the answer: in the following xaml what does CommandParameter binding to? Or in general, what does "{Binding}" mean?

<Button Command="{Binding DataContext.DeleteCommand, ElementName=List}" 
        CommandParameter="{Binding}"/>

Upvotes: 42

Views: 50755

Answers (2)

biju
biju

Reputation: 18000

An Empty {Binding} will pass the current DataContext of the control to the Executed and CanExecute methods respectively.

Upvotes: 16

Markus H&#252;tter
Markus H&#252;tter

Reputation: 7896

{Binding ...} is a MarkupExtension.
In its usual form it takes a Path like {Binding Path=someProperty, ...} (or its short form {Binding someProperty, ...}).
So the path in {Binding} is empty which means the Binding is bound to whatever Source there is for the Binding. This might be a little easier to understand if you know, that {Binding} is actually the same as {Binding DataContext,RelativeSource={RelativeSource Self}}.

So in your case CommandParameter gets the value of the current DataContext of the Button.

Upvotes: 67

Related Questions