Понимать привязку WPF CommandParameter = "{Связывание}" - PullRequest
33 голосов
/ 21 марта 2011

Может быть, это глупый вопрос, но я не могу найти ответ: в следующем xaml, с чем связывается CommandParameter? Или вообще что означает "{Binding}"

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

Ответы [ 2 ]

54 голосов
/ 21 марта 2011

{Binding ...} - это MarkupExtension.
В своей обычной форме он принимает путь типа {Binding Path=someProperty, ...} (или его краткую форму {Binding someProperty, ...}).
Таким образом, путь в {Binding} пуст, что означает, что Связывание связано с любым Источником, имеющимся для Связывания. Это может быть немного легче понять, если вы знаете, что {Binding} на самом деле совпадает с {Binding DataContext,RelativeSource={RelativeSource Self}}.

Таким образом, в вашем случае CommandParameter получает значение текущего DataContext для кнопки.

10 голосов
/ 21 марта 2011

Пустой {Binding} передает текущий DataContext элемента управления в методы Executed и CanExecute соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...