Понять WPF Binding CommandParameter = "{Binding}"
Возможно, это глупый вопрос, но я не могу найти ответ: в следующем xaml, с чем привязывается CommandParameter
? Или вообще, что означает "{Binding}"
?
<Button Command="{Binding DataContext.DeleteCommand, ElementName=List}"
CommandParameter="{Binding}"/>
Ответы
Ответ 1
{Binding ...}
- это MarkupExtension.
В своей обычной форме он принимает путь как {Binding Path=someProperty, ...}
(или его короткую форму {Binding someProperty, ...}
).
Таким образом, путь в {Binding}
пуст, что означает, что привязка привязана к любому источнику, который существует для привязки. Это может быть немного легче понять, если вы знаете, что {Binding}
на самом деле совпадает с {Binding DataContext,RelativeSource={RelativeSource Self}}
.
Итак, в вашем случае CommandParameter получает значение текущего DataContext кнопки.
Ответ 2
Пустой {Binding}
будет передавать текущий DataContext элемента управления в методы Executed и CanExecute соответственно.
Ответ 3
{Binding...} является расширением MarkupExtension. В своей обычной форме он принимает путь типа {Binding Path = someProperty,...} (или его краткую форму {Binding someProperty,...}).