Я пытаюсь привязать команда, как показано ниже, для флажок, присутствующего в Заголовок столбца RadGridView.
<telerik:GridViewCheckBoxColumn DataMemberBinding = "{Binding IsSelected, Mode=TwoWay}" Width = "85" AutoSelectOnEdit = "True" EditTriggers = "CellClick">
<telerik:GridViewCheckBoxColumn.Header>
<CheckBox Command = "{Binding ShowAllInDTCClickedCommand}" Content = "Sh">
<i:Interaction.Triggers>
<i:EventTrigger EventName = "Checked">
<i:InvokeCommandAction Command = "{Binding ShowAllInDTCCheckedCommand}"/>
</i:EventTrigger>
<i:EventTrigger EventName = "Unchecked">
<i:InvokeCommandAction Command = "{Binding ShowAllInDTCUncheckedCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</CheckBox>
</telerik:GridViewCheckBoxColumn.Header>
</telerik:GridViewCheckBoxColumn>
И пытаемся осуществлять их в ViewModel, как показано ниже.
public DelegateCommand ShowAllInDTClickedCommand { get; set; }
public DelegateCommand ShowAllInDTCCheckedCommand { get; set; }
public DelegateCommand ShowAllInDTCUncheckedCommand { get; set; }
ShowAllInDTClickedCommand = new DelegateCommand(ShowAllInDTClicked);
ShowAllInDTCCheckedCommand = new DelegateCommand(ShowAllInDTCChecked);
ShowAllInDTCUncheckedCommand = new DelegateCommand(ShowAllInDTCUnchecked);
private void ShowAllInDTClicked()
{
//Do Something
}
private void ShowAllInDTCChecked()
{
//Do Something
}
private void ShowAllInDTCUnchecked()
{
//Do Something
}
Но эти команды не выполняются, т.е. код вообще недоступен. Что мне не хватает?
Вы привязали свою сетку к модели?
Да, я могу заполнять объекты, а все остальное работает нормально. Кроме этих команд ...
Судя по вашим комментариям к mm8, похоже, что есть проблема с вашими триггерами интерактивности. Возможно, попробуйте это вместо этого stackoverflow.com/questions/5566050/… Кажется, все, что вам нужно, - это узнать статус флажка и выполнить код соответственно, поэтому просто передача этого CommandParameter может дать вам эту информацию.
Где сделать присвоение ShowAllInDTClickedCommand = new DelegateCommand (ShowAllInDTClicked); В конструкторе или еще где?
Да, я назначаю в конструкторе
@ user2619824 Если вы заметили мой вопрос, он у меня уже есть ...
Посмотри внимательнее. У вас есть команда, но нет CommandParameter. Попробуйте использовать параметр.





Если свойства DelegateCommand определены в вашей модели представления, вы должны выполнить привязку к ним следующим образом:
<i:EventTrigger EventName = "Checked">
<i:InvokeCommandAction Command = "{Binding DataContext.ShowAllInDTCCheckedCommand,
RelativeSource = {RelativeSource AncestorType=telerik:RadGridView}}"/>
</i:EventTrigger>
Спасибо за ваш ответ. Я изменил код так же, как вы упомянули. Но это не работает.
Итак, где определены ваши команды и что такое DataContext вашего RadGridView?
Мои команды определены в ViewModel. И я могу запускать другие команды, связанные в этом XAML, с той же ViewModel
Вы не ответили на мой вопрос ... Что такое DataContext у GridView? А что такое ItemsSource у GridView? А в каком виде команды?
Datacontext - это ViewModel. Другие рабочие команды - это команды кнопок.
Какие кнопки команды? Пожалуйста, отредактируйте свой вопрос и включите все соответствующие части.
Скажем, я добавляю кнопку в этот XAML и привязываю команду этой кнопки к этой команде (например, ShowAllInDTCCheckedCommand), тогда она работает нормально.
Это зависит от куда, который вы добавляете, и от того, что это за DataContext.
В моем XAML есть кнопка и GridView. GridView имеет столбцы. И в одном столбце есть этот флажок. Мой XAML имеет ViewModel как Datacontext. Если у меня есть наблюдаемая коллекция в ViewModel, я могу привязать ее к сетке в моем представлении. Не могли бы вы рассказать мне, что будет в поле Datacontext для флажка в ColHeader?
Не модель представления. Вот почему вы должны использовать RelativeSource при привязке к команде, как я сказал в своем ответе.
Но он работает не так, как ожидалось, когда я указываю gridview как родственный источник
Вы добавили "DataContext." к пути привязки? Что, если вы установите AncestorType в Window или UserControl или в любой другой тип вашего представления?
Да, добавил я, все еще не работает. и да, я также пробовал, добавив «UserControl» в качестве типа предка, все еще бесполезный.
По сути, я пытаюсь проверить свойство этого столбца для всех записей, присутствующих в сетке. что-то вроде «Выбрать все», «Отменить выбор» ...