как использовать isChecked в качестве параметра команды в той же команде флажков - PullRequest
9 голосов
/ 13 апреля 2011

Итак, у меня есть флажок, который запускает команду с использованием WPF / MVVM, это работает нормально, но я хочу использовать свойство IsChecked флажка в качестве параметра команды.Я попробовал это.

  <CheckBox Margin="3" Content="Clear Selected OEM" 
                              Command="{Binding Path=ClearOemCommand}" 
                              CommandParameter="{Binding Path=IsChecked}"/>

Bu Я получаю сообщение об ошибке в окне вывода, которое говорит

System.Windows.Data Error: 40 : BindingExpression path error: 'IsChecked' property not found on 'object'

Я бы знал, как использовать поиск предка, если бы я хотел использовать свойство из другого элемента управления, но яОшарашенный здесь - это, вероятно, легче, чем я думаю ... Просто не связываю мои мысли.

Спасибо!

Ответы [ 4 ]

30 голосов
/ 13 апреля 2011

Добавьте RelativeSource Self в CommandParameter

  <CheckBox Margin="3" Content="Clear Selected OEM" 
   Command="{Binding Path=ClearOemCommand}" 
   CommandParameter="{Binding Path=IsChecked, RelativeSource={RelativeSource Self}}" />
3 голосов
/ 24 июня 2011

Если вы столкнулись со следующим исключением, как я это сделал ...

Установить свойство System.Windows.Data.Binding.RelativeSource сгенерировало исключение

Попробуйте вместо этого:

CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=IsChecked}"
2 голосов
/ 01 июля 2011

Да, JW1 правильный. Вы можете использовать имя элемента, как это, это также будет работать

"{Binding Path=IsChecked,ElementName=chkAll}"
1 голос
/ 13 апреля 2011

Вместо создания команды в CheckBox вы можете связать IsChecked со свойством CLR и выполнить логику команды на установщике свойства CLR.Это еще один обходной путь обработки командного поведения.

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