Как связать действие удаления (в WPF Datagrid) с командой или собственностью в виде модели

У меня есть datagrid и модель представления, которая имеет коллекцию Observable класса Person, которая служит ItemSource для datagrid.

В Datagrid есть два текстовых столбца: "FirstName" и "LastName"

У datagrid есть значения "CanUserAddRows" и "CanUserDeleteRows" равны true. Таким образом, пользователь может добавлять новые строки и удалять их с помощью кнопки удаления.

Когда пользователь пытается удалить строку, я хочу проверить, может ли он удалить это или нет. Если он удалит его, он будет удален, иначе будет отображаться ошибка, и строка не может быть удалена. Что-то вроде команды реле

Новый RelayCommand (parm = > this.DeletePerson(parm), this.CanDeletePerson(parm)

Возможно ли это? Если да, то как?

  • Гириджа

Ответ 1

Попробуйте настроить DataGrid на...

CanUserDeleteRows = "False" SelectedItem = "{Binding SelectedPerson, Mode = TwoWay}"

и добавление...

<DataGrid.InputBindings>
    <KeyBinding Key="Delete" Command="{Binding DeletePersonCommand}" />
</DataGrid.InputBindings>

Добавить SelectedPerson в вашу виртуальную машину и выполнить проверку на удаление на основе SelectedPerson в ExPutCommand (ICommand) Execute или CanExecute и удалить элемент из ObservableCollection, если проверка прошла.