Как связать действие удаления (в WPF Datagrid) с командой или свойством в модели представления - PullRequest
11 голосов
/ 23 февраля 2012

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

В сетке данных есть два текстовых столбца: «FirstName» и «LastName»

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

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

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

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

  • Гирия

Ответы [ 2 ]

30 голосов
/ 24 февраля 2012

Попробуйте установить для вашей DataGrid значение ...

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

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

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

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

0 голосов
/ 14 сентября 2018

Свяжите свойство с CanUserDeleteRows.

XAML:

CanUserDeleteRows="{Binding UserCanDelete}"

ViewModel:

    public bool UserCanDelete
    {
        get
        {
            // return a value based on the currently selected item and business rules
        }
    }

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

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