Можно ли привязать CommitEditCommand на Datagrid к ICommand в модели представления? - PullRequest
1 голос
/ 16 декабря 2010

Я пытаюсь сделать что-то похожее;

<Button Command="{Binding DeleteCommand}" />

Где DeleteCommand - это ICommand, предоставляемая моделью представления.

Я думал, что мог бы сделать что-то похожее на следующее, но это не так;

<DataGrid CommitEditCommand="{Binding CommitCommand}" />

По сути, я пытаюсь зафиксировать событие в модели представления и действовать в соответствии с ним. Что мне здесь не хватает?

1 Ответ

1 голос
/ 16 декабря 2010

Моя первоначальная догадка - нет ... это основано на чтениях из блога Винсента Сибала .

Кажется, что CommitEditCommand на DataGrid вызывает IEditableCollectionView аналог.Итак ...

DataGrid.CommitEditCommand -> IEditableCollectionView.CommitEdit -> IEditableObject.EndEdit

Поэтому, если ваша модель реализует IEditableObject и вы находитесь в ячейке в пределах DataGrid, нажмитеEnter (InputBinding, сохраненный через CommandManager) по умолчанию выполнит DataGrid.CommitEditCommand и отключит каскад действий вниз по течению, как указано выше.

В блоге говорится об использовании таких событий, как RowEditEndingили CellEditEnding для отмены команды, что в теории означало бы, что вы можете отменить команду и в этот момент перейти к желаемому поведению.

...