在网格中插入行后从 NewItemRow 获取数据

Get data from NewItemRow after row inserted in grid

我正在使用 DevExpress XPF GridControl 的 NewItemRow 向我的数据库添加新行。如何从新行中获取用户输入的数据。我正在使用棱镜框架。这是我的 xaml

         <dxg:GridControl.View>
            <dxg:TableView AutoWidth="True" AllowEditing="True" NewItemRowPosition="Top">       
                <dxmvvm:Interaction.Behaviors>
                    <dxmvvm:EventToCommand EventName="RowUpdated" 
                                           Command="{Binding RowUpdateClickCommand}" CommandParameter="{Binding CurrentItem}"/>
                </dxmvvm:Interaction.Behaviors>
            </dxg:TableView>
        </dxg:GridControl.View>

要获取有关更新行的信息,您可以将 EventArgs 传递给您的命令。要完成此任务,请将 EventToCommand.PassEventArgsToCommand 属性 设置为 true:

<dxmvvm:EventToCommand EventName="RowUpdated" PassEventArgsToCommand="True"
                        Command="{Binding RowUpdateClickCommand}"/>

要确定用户修改了 NewItemRow,您可以将 RowEventArgs.RowHandle 与静态 GridControl.NewItemRowHandle 属性:

public class MyViewModel {
    public MyViewModel() {
        RowUpdateClickCommand = new DelegateCommand<RowEventArgs>(RowUpdateClick);
    }
    public ICommand RowUpdateClickCommand {
        get;
        set;
    }
    public void RowUpdateClick(RowEventArgs e) {
        if (e.RowHandle == GridControl.NewItemRowHandle) {
            //e.Row -  new row is here
        }
    }
}

请注意,如果您不想将事件参数传递到视图模型级别,您可以使用 EventArgsConverter

进行转换