我正在尝试做类似的事情;
<Button Command="{Binding DeleteCommand}" />
其中 DeleteCommand 是视图模型公开的 ICommand。
我以为我可以做类似于以下的事情,但事实并非如此;
<DataGrid CommitEditCommand="{Binding CommitCommand}" />
基本上我试图在视图模型中捕获事件发生并对其采取行动。我在这里想念什么?
我正在尝试做类似的事情;
<Button Command="{Binding DeleteCommand}" />
其中 DeleteCommand 是视图模型公开的 ICommand。
我以为我可以做类似于以下的事情,但事实并非如此;
<DataGrid CommitEditCommand="{Binding CommitCommand}" />
基本上我试图在视图模型中捕获事件发生并对其采取行动。我在这里想念什么?
我最初的预感是没有......这是基于文森特西巴尔博客的读数。
似乎CommitEditCommand
在DataGrid
调用IEditableCollectionView对应项。所以...
DataGrid.CommitEditCommand
-> IEditableCollectionView.CommitEdit
->IEditableObject.EndEdit
因此,如果您的模型正在实现IEditableObject
,并且您在按DataGrid
Enter 键(通过 CommandManager 存储的 InputBinding)内的单元格上,则默认情况下会执行DataGrid.CommitEditCommand
并触发下游的级联动作,如上文所述。
该博客确实谈到了使用诸如RowEditEnding
或CellEditEnding
取消命令之类的事件,这意味着理论上您可以取消命令并在那时路由到您想要的行为。