Как связать действие удаления (в 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, если проверка прошла.