1

我正在尝试做类似的事情;

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

其中 DeleteCommand 是视图模型公开的 ICommand。

我以为我可以做类似于以下的事情,但事实并非如此;

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

基本上我试图在视图模型中捕获事件发生并对其采取行动。我在这里想念什么?

4

1 回答 1

1

我最初的预感是没有......这是基于文森特西巴尔博客的读数。

似乎CommitEditCommandDataGrid调用IEditableCollectionView对应项。所以...

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

因此,如果您的模型正在实现IEditableObject,并且您在按DataGridEnter 键(通过 CommandManager 存储的 InputBinding)内的单元格上,则默认情况下会执行DataGrid.CommitEditCommand并触发下游的级联动作,如上文所述。

该博客确实谈到了使用诸如RowEditEndingCellEditEnding取消命令之类的事件,这意味着理论上您可以取消命令并在那时路由到您想要的行为。

于 2010-12-15T23:07:43.903 回答